实体引用和lxml

Ign*_*ams 9 python xml lxml

这是我的代码:

from cStringIO import StringIO
from lxml import etree

xml = StringIO('''<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE root [
<!ENTITY test "This is a test">
]>
<root>
  <sub>&test;</sub>
</root>''')

d1 = etree.parse(xml)
print '%r' % d1.find('/sub').text

parser = etree.XMLParser(resolve_entities=False)
d2 = etree.parse(xml, parser=parser)
print '%r' % d2.find('/sub').text
Run Code Online (Sandbox Code Playgroud)

这是输出:

'This is a test'
None
Run Code Online (Sandbox Code Playgroud)

如何让lxml给我'&test;',即原始实体参考?

Mat*_*ttH 19

"未解析的"实体留作元素节点的子节点 sub

>>> print d2.find('/sub')[0]
&test;
>>> d2.find('/sub').getchildren()
[&test;]
Run Code Online (Sandbox Code Playgroud)

  • 你很受欢迎,我印象深刻,我能够帮助你:) (16认同)
  • 还有伊格纳西奥不知道的东西;) (2认同)