如何在Python中继承XMLParser(或TreeBuilder)

时间:2016-06-22 08:06:43

标签: python xml parsing xml-parsing elementtree

我一直在寻找这个答案。我可以找到的所有创建自定义XML解析器的示例(例如在docsthis examplethis 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)'

我觉得我很接近,但我错过了一些我无法看到的难题中的重要部分。

0 个答案:

没有答案