2012-07-23 215 views
1

想我已經在我的XML文件中的下列標籤:蟒蛇xml.sax錯誤

<?xml version="1.0" encoding="utf-8"?> 
<jobs> 
<job> 
<P class="Beaton"><FONT size=3><SPAN style="FONT-FAMILY: Symbol; COLOR: black; mso-ascii-font-family: 'Times New Roman'">�</SPAN><SPAN style="COLOR: black"><FONT face="Times New Roman"><SPAN style="mso-spacerun: yes">&nbsp; </SPAN>Position accountability<o:p></o:p></FONT></SPAN></FONT></P> 
<P class="Beaton"><FONT size=3><SPAN style="FONT-FAMILY: Symbol; COLOR: black; mso-ascii-font-family: 'Times New Roman'">�</SPAN><SPAN style="COLOR: black"><FONT face="Times New Roman"> <SPAN style="mso-spacerun: yes">&nbsp;</SPAN>55 FTEs <o:p></o:p></FONT></SPAN></FONT></P> 
</job> 
</jobs> 

以下是我的代碼:

from xml.sax.handler import ContentHandler 
import xml.sax 

xml_path = 'windows/xml_file.xml' 

try: 
    parser = xml.sax.make_parser() 
    parser.parse(open(xml_path)) 

except (xml.sax.SAXParseException), e: 
     print "*** PARSER error: %s" % e 

Result : 
*** PARSER error: windows/xml_file.xml:4:113: not well-formed <invalid token> 

燦任何人都可以告訴我p標籤有什麼問題,以及如何避免這種錯誤?

回答

0

問題可能在於您的FONT標籤;應該引用size屬性的值,否則這僅僅是無效的XML。

您也可能遇到&nbsp;問題,該問題不是有效的XML實體(儘管它在XHTML中有效)。此外,您的<jobs>標籤未正確關閉;最後一行應該是</jobs>

通常,如果您在閱讀XML文件時遇到問題,首先要檢查XML文件是否格式良好。一種可能的方法是將其輸入W3C validator

+0

感謝您的回覆和我的權利,但對於其他一些標籤(我粘貼在這裏)類屬性和大小屬性的值不被引用,但即使其工作正常,所以我很困惑,並在這裏問 – 2012-07-23 13:40:40

+0

是否錯誤是'?'字符在上面的p標籤中,因爲它看起來有些不同於正常的東西?標記(假設所有屬性的值都被引用) – 2012-07-23 13:44:01

+0

XML_must_中的屬性值必須被引用。解析器可以不加引號地接受它們,但這不會使XML有效。我不知道你的「?」字符,但嘗試刪除它,看看解析器是否接受它。另外,我剛剛注意到你的''標籤沒有正確關閉。 – 2012-07-23 13:48:14