Python xml.etree.ElemenTtree,获取HTML实体

时间:2013-10-24 02:54:31

标签: python xml elementtree

我正在尝试分析xml数据,并在使用

时遇到与HTML实体有关的问题
import xml.etree.ElementTree as ET
tree = ET.parse(my_xml_file)
root = tree.getroot()
for regex_rule in root.findall('.//regex_rule'):
  print(regex_rule.get('input')) #this ".get()" method turns &lt; into <, but I want to get &lt; as written
  print(regex_rule.get('input') == "(?&lt;!\S)hello(?!\S)") #prints out false because ElementTree's get method turns &lt; into < , is that right?

这是xml文件内容:

<rules>
<regex_rule input="(?&lt;!\S)hello(?!\S)" output="world"/>
</rules>

如果有人可以指示我从输入的xml属性获取字符串而不转换

,我将不胜感激
&lt; 

进入

<

1 个答案:

答案 0 :(得分:2)

xml.etree.ElementTree完全符合标准,即解码XML字符实体,理解它们实际上对引用的字符进行编码,并且应该这样解释。

如果您需要对文字&lt;进行编码,则首选操作方法是将输入文件更改为使用&amp;lt;(即我们对&进行XML编码)。< / p>

如果您无法更改输入文件格式,那么您可能需要使用不同的模块,或编写自己的解析器:xml.etree.ElementTree在您对输出执行任何有意义的操作之前很好地翻译实体。 / p>