2012-07-11 87 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'))