如何在Python中子类XMLParser(或TreeBuilder)

用户

这几天我一直在寻找答案。我能找到的所有创建自定义XML解析器的例子(例如在docs,或this example,或this questionthis question)中,都谈到了生成全新的数据(例如,XML的深度,或等效的CSV)。在

但是,我要做的就是截获解析,检查数据,可能的话修改它,然后让解析器继续。在

我试过这个,作为一个玩具的例子:

from xml.etree import ElementTree as ET

class myParser():
  def start(self, tag, data):
    ##### Pretty sure this is wrong, but what should it be? #####
    return ET.XMLParser.start(tag, data)
  def data(self, data):
    return ET.XMLParser.data(data.replace('"', '"'))
  def end(self, tag):
    return ET.XMLParser.end(tag)
  def close(self):
    return ET.XMLParser.close()

def parseFile(fileName):
  p = ET.XMLParser(target=myParser)
  tree = ET.parse(fileName, parser=p)

但我得到了

TypeError: 'unbound method start() must be called with myParser instance as first argument (got str instance instead)'

我觉得我离得很近了,但我错过了一些我看不见的关键部分。在


已被浏览了5193次
更新日期: 2020-10-26 05:44:59
0 个回答

目前没有回答

最新Python问答

推荐Python问答