使用XML.etree.ElementTree解析XML 1.1控制字符

2024-05-01 22:02:20 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,我正在解析包含控制字符的XML:

import xml.etree.ElementTree as ET

tree = ET.fromstring('<?xml version="1.1" encoding="UTF-8"?><field>foo &#11; bar</field>')
print(tree.text)

XML 1.1允许使用控制字符,但解析失败。 是否有我遗漏的内容,或者xml.etree.ElementTree不支持此类控制字符


Tags: importtreefieldfooversionasxmlutf
2条回答

@snakecharmerb是对的。向您推荐一个更宽容的库,也许您会喜欢它

from simplified_scrapy import SimplifiedDoc,req,utils
html = '<?xml version="1.1" encoding="UTF-8"?><field>foo &#11; bar</field>'
doc = SimplifiedDoc(html)
print(doc.field.text)

结果:

foo &#11; bar

这里有更多的例子https://github.com/yiyedata/simplified-scrapy-demo/blob/master/doc_examples

linux上的ElementTree解析器至少使用了系统的expat解析器。libexpat维护程序do not plan to supportXML 1.1

lxml包提供了与ElementTree类似的API,它使用libxml2解析XML。libxml2维护程序also do not plan to implementxml1.1(此引用非常古老,但libxml2homepage仅引用1.0标准

你需要找到

  1. 实际实现XML1.1的解析器
  2. 解析器的Python绑定

相关问题 更多 >