__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 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题