2012-07-24 95 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中解析。

您需要更改特殊字符。