0

我正在尝试分析 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; 

进入

<
4

1 回答 1

2

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

如果您确实需要对文字进行编码,首选的做法&lt;是更改您的输入文件以使用&amp;lt;(即我们对 .xml 进行 XML 编码&)。

如果您无法更改输入文件格式,那么您可能需要使用不同的模块,或者编写自己的解析器:xml.etree.ElementTree在您对输出做任何有意义的事情之前,先翻译实体。

于 2013-10-24T04:12:07.427 回答