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­lo World</p>' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |