使用Python ElementTree pars在另一个xml中导入xml

2024-06-28 10:52:22 发布

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

有没有可能加载一个xml文件,用Python导入另一个xml文件元素树.parse? 在

例如: 我有档案测试.xml其中包括:

<TestXml>
    <!DOCTYPE doc [
        <!ENTITY otherFile SYSTEM "test_1.xml">
    ]>
</TestXml>

我还有test_1.xml,其中包含:

^{pr2}$

我想装东西测试.xml在我的python脚本中:

from xml.etree.ElementTree import parse

a = parse('test.xml')

print a.find('test').text

我希望它能输出:

it works!

但是我有:

Traceback (most recent call last):
  File "D:/Work/depot/WIP/olex/Python/test/test.py", line 3, in <module>
    a = parse('test.xml')
  File "C:\Python27\lib\xml\etree\ElementTree.py", line 1182, in parse
    tree.parse(source, parser)
  File "C:\Python27\lib\xml\etree\ElementTree.py", line 656, in parse
    parser.feed(data)
  File "C:\Python27\lib\xml\etree\ElementTree.py", line 1642, in feed
    self._raiseerror(v)
  File "C:\Python27\lib\xml\etree\ElementTree.py", line 1506, in _raiseerror
    raise err
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 2, column 6

有人知道我做错了什么吗?还是不可能为python ElementTree解析器加载这样一个xml文件?在


Tags: 文件inpytestparserparselibfeed
1条回答
网友
1楼 · 发布于 2024-06-28 10:52:22

您遇到的具体问题是xml格式不正确。您的DOCTYPE声明不应在根元素内。相反,它应该位于根元素之前:

<!DOCTYPE doc [
        <!ENTITY otherFile SYSTEM "test_1.xml">
    ]>
<TestXml>
 some content . . .
</TestXml>

也就是说,一旦你解决了这个问题,你将面临一个更大的问题。如何使用Python解析DOCTYPE声明?您应该使用xml模块、lxml模块还是bs4模块?在

这是个棘手的问题。据我所见,人们(最近)不得不自己进行dtd解析。请参阅SO线程herehere以获取一些可能的线索。在

相关问题 更多 >