14

我正在使用 Pythonxml.etree.ElementTree对文件进行一些 XML 解析。但是,我在文档中途收到此错误:

xml.parsers.expat.ExpatError: not well-formed (invalid token): line X, column Y

因此,我转到 vim 中的 X 行 Y 列,我看到一个带有红色背景突出显示的与号 (&)。这是什么意思?

它前面的两个字符也是>>,所以也许有什么特别之处>>&

有人知道怎么修这个东西吗?

4

3 回答 3

17

& 是 XML 中的一个特殊字符,用于字符实体。如果您的 XML 本身有 & 坐在那里,而不是像 or 之类的实体的一部分&ѐ那么 XML 是无效的。

于 2012-07-11T23:30:35.230 回答
0

您可以使用xml模块中的转义函数

from xml.sax.saxutils import escape

my_string = "Some string with an &"

# If the string contains &, <, or > they will be converted.
print(escape(my_string))

# Above will return: Some string with an &amp;

参考:转义字符串以在 XML 中使用

于 2019-04-02T02:18:44.677 回答
-1

我通过使用yattag来解决它

from yattag import indent
print indent(xml_string.encode('utf-8'))
于 2016-02-03T12:50:49.110 回答