2012-07-24 116 views
2

目前我在xml.sax語法分析器解析XML文件之前從XML文件中的特殊字符和標記及(無效的XML標記)如何讓在蟒蛇xml.sax解析器

假設我有以下代碼

filepath = 'users/file.xml' 

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

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

file.xml

<?xml version="1.0" encoding="utf-8"?> 
<tag1> 
    <tag2> 
<P style="MARGIN: 0in 0in 0pt" class="MsoNormal"><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 will manage 24 ED Rooms with 24/7 accountability<o:p></o:p></FONT></SPAN></FONT></P> 
    <DIV>&nbsp;</DIV> 
    </tag2> 
</tag1> 

當分析器在div標籤達到&它停止執行,並顯示以下錯誤

*** PARSER error: users/file.xml:5:1: not well-formed <invalid token> 

如何刪除或提供從XML文件來分析程序之前逃脫所有無效的XML標記,沒有任何功能逃跑&和特殊字符組成的XML標記或其他我們需要遍歷他的xml文件並刪除每個無效的令牌?但不知道如何去做。任何人都可以分享這樣做的代碼。

+0

我幾乎可以肯定,「 」是你應該避免的。你必須正確編碼它。 – 2012-07-24 07:13:28

+1

這個XML片段有很多問題。您正在使用未定義的引用 -  在HTML中定義,不是通用的XML。您還使用未定義的名稱空間前綴「o」,這是另一個錯誤。我不能提供很多建議,除非確保生成此輸出的任何內容都能創建正確的XML。 – 2012-07-24 07:56:43

+0

可能的重複[如何忽略 和特殊字符從xml標記之前給xml文件解析器](http://stackoverflow.com/questions/11625224/how-to-ignore-nbsp-and-special-characters-from -xml-tag-before-giving-xml-file) – 2012-07-24 09:17:33

回答

1

不要嘗試修復不良的XML。首先修復創建不良XML的過程。你還沒有告訴我們這個東西寫什麼程序。關於XML的全部觀點是它是一個標準,如果人們堅持標準,你只能從中受益。

+0

有時需要忽略當你只想繼續並跳過特殊字符。 – Sandeep 2012-11-30 04:19:54

0

這不是修復響應的好習慣。 特殊字符不可能在android中解析。

您需要更改特殊字符。