__Alvin 2015-10-20 13:00 采纳率: 0%
浏览 2117
已结题

python sax模块解析xml遇到非法字符怎么解决?

用python的sax模块解析xml的时候出现非法字符直接停止了,百度搜到有大神说用回调函数处理当前的非法字符或者跳过直接运行接下来的内容。不过具体应该怎么实现呢?求大神赐教。下面是我的代码,非法字符是出现再其中的很多个tagname="url"中的内容,能在原来的基础上改就更好了,再次感谢

import xml.sax

class XmlHandler( xml.sax.ContentHandler ):
    def __init__(self):
        self.CurrentData = ""
        self.url = ""
        self.id = ""
        self.detail = ""

   # 元素开始事件处理
    def startElement(self, name,attr):
        self.CurrentData = name
        if name == "entry":
            print("*****Entry*****")

   # 元素结束事件处理
    def endElement(self, name):
        if self.CurrentData == "url":
            print("url:", self.url)
        elif self.CurrentData == "phish_id":
            print("phish_id:", self.id)
        elif self.CurrentData == "phish_detail_url":
            print("phish_detail_url:", self.detail)
        self.CurrentData = ""
   # 内容事件处理
    def characters(self, content):
        if self.CurrentData == "url":
            self.url = content
        elif self.CurrentData == "phish_id":
            self.id = content
        elif self.CurrentData == "phish_detail_url":
            self.detail = content
        else:


if __name__ == "__main__":
    # 创建一个 XMLReader
    parser = xml.sax.make_parser()
    # turn off namepsaces
    parser.setFeature(xml.sax.handler.feature_namespaces, 0)

    # 重写 ContextHandler
    Handler = XmlHandler()
    parser.setContentHandler( Handler )
    parser.parse("online-valid.xml")
  • 写回答

1条回答 默认 最新

  • devmiao 2015-10-20 23:43
    关注

    这是一个非法的 XML,正常的解析应该拿它没办法。

    如果你确定这个 XML 文档里面不可能出现任何的 XML entity,可以先替换 & 字符为 & 再解析。

    评论

报告相同问题?

悬赏问题

  • ¥15 我这模型写的不对吗?为什么lingo解出来的下面影子价格这一溜少一个变量
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波