如何删除特殊字符和&在给python中的xml.sax解析器之前,来自xml文件的令牌(无效的xml令牌)

时间:2012-07-24 07:09:36

标签: python xml sax

目前我正在使用xml.sax解析器来解析xml文件

假设我有以下代码

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>

当解析器到达&amp;在div标签中它停止执行并显示以下错误

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

如何在从xml文件提供解析器之前删除或转义所有无效的xml标记,是否有任何函数可以转义&amp;和特殊字符组成xml标签,否则我们需要遍历他的xml文件并删除每个无效的令牌?但不知道该怎么做。任何人都可以分享这样做的代码。

2 个答案:

答案 0 :(得分:1)

不要尝试修复错误的XML。首先修复创建错误XML的进程。你还没有告诉我们什么程序写了这个东西。关于XML的全部观点是它是一个标准,如果人们真正坚持标准,你只能从中受益。

答案 1 :(得分:0)

这不是修复响应的好习惯。 在android中无法解析特殊字符。

你需要改变特殊字符..