【问题标题】:python - xml.etree.ElementTree.ParseError: not well-formed (invalid token)python - xml.etree.ElementTree.ParseError:格式不正确(无效令牌)
【发布时间】:2019-01-15 22:49:30
【问题描述】:

我有以下代码:

import xml.etree.ElementTree as ETree

parser = ETree.XMLParser(encoding="utf-8")
tree = ETree.fromstring("C:/Users/XXX/Downloads/test_xml.xml", parser=parser)
print(ETree.tostring(tree))

我收到以下错误消息:

Traceback (most recent call last):
  File "C:/Users/XXX/.PyCharmCE2018.1/config/scratches/scratch.py", line 6, in <module>
    tree = ETree.fromstring("C:/Users/XXX/Downloads/test_xml.xml", parser=parser)
  File "C:\Users\XXX\AppData\Local\Programs\Python\Python36-32\lib\xml\etree\ElementTree.py", line 1314, in XML
    parser.feed(text)
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 2

我可能在 StackOverflow 上检查了此错误消息的所有问题,但没有任何帮助:

  • 我尝试使用其他编辑器编辑文件(按照here 的建议);
  • 我添加了这一行:tree.set('SignalStrength',"100")(来自here);
  • 尝试添加 DOCTYPE;
  • W3 Validator检查文件;

等等

然后我尝试导入另一个结构完全不同的 XML 文件 - 错误消息保持不变 - 甚至位置:line 1, column 2

然后我尝试将文件名更改为不存在 - 错误消息保持不变!所以这不是文件的问题,而是其他问题。我不明白是什么。

P.S.这是我使用的 XML 文件之一:

<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

编辑: 可能我无法像在 fromstring() 函数中那样导入文件?

【问题讨论】:

    标签: python xml python-3.x xml-parsing elementtree


    【解决方案1】:

    从文件解析时需要使用parse() 而不是fromstring()

    parse() 返回一个 ElementTree 实例,tostring() 需要一个 Element 实例。

    此代码有效:

    import xml.etree.ElementTree as ETree
    
    parser = ETree.XMLParser(encoding="utf-8")
    tree = ETree.parse("test_xml.xml", parser=parser)
    print(ETree.tostring(tree.getroot()))
    

    【讨论】:

      猜你喜欢
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 2016-05-04
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      • 2018-09-25
      相关资源
      最近更新 更多