2012-07-11 35 views
11

我使用Python的xml.etree.ElementTree来对文件进行一些XML解析。不过,我得到这个错误中途通过文档:python中的XML解析:expaterror格式不正确

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

所以我去行X,Y列在vim和我看到用红色背景突出符号(&)。这是什么意思?

此外,它前面的两个字符是>>,所以也许有什么特别的关于>>&

任何人都知道如何解决这个问题?

回答

12

&是XML中的一个特殊字符,用于字符实体。如果您的XML有&本身,而不是像&ѐ等实体的一部分,则XML无效。

+0

我认为这个问题可能是因为我有一个多行(串)的元素。基本上这个元素我做了一个grep(regex)|头-5,取回5行,然后将其作为xml元素粘贴在文件中。以某种方式制作5个单独的元素会更好吗? – JDS 2012-07-11 23:31:52

+0

这不是它内部有多少元素的问题,而是它里面的字符的问题。你不能把&字符放在一个XML文档中。你需要用'&'来代替它。 – BrenBarn 2012-07-11 23:34:13

+0

一些文字和那个字符是不是你说的好? 还有我在读从许多不同的文件中这些行,所以我不知道我怎么会自动跳脱他们 – JDS 2012-07-11 23:36:19

0

我用yattag解决它,而不是

from yattag import indent 
print indent(xml_string.encode('utf-8')) 
相关问题