Wireshark XML文件失败Python XML解析器.为什么



我正在使用XML文件和解析。对于我的项目之一,我尝试使用Wireshark Diameter Digonary XML文件并解析它们。我的ATEMPT失败了。使用Python 2.7主要问题是为什么?一定有明显的东西,我缺少。

import xml.etree.ElementTree as ET:
def load_dict(path, filename):
    with open("%s/%s" % (path, filename)) as f:
        return f.readlines()
ET.fromstring("".join(load_dict("diameter", "HP.xml")))

返回错误:

Traceback (most recent call last):
  File ".../loadxml.py", line 7, in <module> ET.fromstring("".join(load_dict("diameter", "HP.xml")))
  File "...Python27libxmletreeElementTree.py", line 1311, in XML parser.feed(text)
  File "...Python27libxmletreeElementTree.py", line 1653, in feed self._raiseerror(v)
  File "...Python27libxmletreeElementTree.py", line 1517, in raiseerror raise err
xml.etree.ElementTree.ParseError: junk after document element: line 5, column 0

XML文件对我来说还可以,但它在上面窒息:

<?xml version="1.0" encoding="UTF-8"?>
<vendor vendor-id="XXX" code="42" name="Company. Inc."/>
<application id="555" name="Demo" uri="None">
</application>

在我看来,您的文档格式不佳。参见https://en.wikipedia.org/wiki/well-formed_document

内容可以通过开始标签和结束标签

界定。

您的第一个标签"供应商"是自我关闭的,它不包含其余标签。您要么只有文件的一部分,要么是不正确的XML。您可以尝试添加一个root标签以封闭所有其他标签,但即使在此可能不起作用。

<?xml version="1.0" encoding="UTF-8"?>
<root>
<vendor vendor-id="XXX" code="42" name="Company. Inc."/>
<application id="555" name="Demo" uri="None">
</application>
</root>

您可以在此处验证XML http://www.w3schools.com/xml/xml_validator.asp

谢谢。您指出我的方向正确。确实 - 我忽略了一个主文件中的Wireshark XML文件。一旦我从正确的XML开始并包含了所有其他文件,就可以解析。

我对XML格式的理解是错误的。我没有意识到每个标签必须关闭,但也需要将所有其他标签封闭在root One中。

最新更新