加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – lxml.tostring错误地用HTML实体替换文本

发布时间:2020-12-20 13:10:18 所属栏目:Python 来源:网络整理
导读:我目前正在从YAML文件中获取字符串并将它们转换为 XML.我正在使用lxml.etree执行此操作,并且基本上构建了一个XML标记 msg对于我的YAML文件中的每个值,然后使用lxml.etree.tostring()将其写出来.但是,给我的文件偶尔会有HTML标签,例如 a,HTML实体,例如 nbsp;,
我目前正在从YAML文件中获取字符串并将它们转换为 XML.我正在使用lxml.etree执行此操作,并且基本上构建了一个XML标记< msg>对于我的YAML文件中的每个值,然后使用lxml.etree.tostring()将其写出来.但是,给我的文件偶尔会有HTML标签,例如< a>,HTML实体,例如& nbsp;,以及角色喜欢& n. LXML解析器当前正在将所有这些转换为HTML实体,以便< a>成为& lt; a& gt;和& nbsp;成为& amp; nbsp;和&简单地变成& amp;

在前两种情况下,我似乎会丢失这些数据,但我似乎无法弄清楚如何告诉LXML解析器不要为我做任何HTML实体转换.有没有办法做到这一点?

解决方法

您可以使用 etree.Entity创建然后正确序列化的实体.

这是一个非常“简单”的例子 – 现实世界的使用通常需要更复杂的操作(好吧,你正在处理XML):

>>> from lxml import etree,html
>>> element = etree.fromstring('<p>Hel-lo World</p>')
>>> parts = element.text.split('-')
>>> element.text = parts[0]
>>> shy = etree.Entity('shy')
>>> shy.tail = parts[1]
>>> element.append(shy)
>>> html.tostring(element,encoding='unicode')
'<p>Hel&shy;lo World</p>'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读