Python 如何通过lxml.sax接口传递自定义属性?
我正在使用Python 如何通过lxml.sax接口传递自定义属性?,python,python-3.x,lxml,sax,Python,Python 3.x,Lxml,Sax,我正在使用lxml.sax修改XML文档,我想将自定义属性传递给startelements方法。我的初始代码是: from lxml import sax class MyContentHandler(sax.ElementTreeContentHandler): def startElementNS(self, ns_name, qname, attributes): if qname == 'text': # the troublesome
lxml.sax
修改XML文档,我想将自定义属性传递给startelements
方法。我的初始代码是:
from lxml import sax
class MyContentHandler(sax.ElementTreeContentHandler):
def startElementNS(self, ns_name, qname, attributes):
if qname == 'text':
# the troublesome line
super().startElementNS((None, 'div'), 'div', {'class':'page'})
super().startElementNS(ns_name, qname, attributes)
但是,如上所述,attributes
参数必须是attributes
对象,而不是常规字典。调试显示,确切的类型是sax.xmlreader.AttributesNSImpl
,但是这个类没有正式的文档记录,我似乎无法直接实例化它
是否有任何(官方或黑客)方法可以为
startelements
方法提供我自己的属性?经过几天的反复试验,发现startelements
函数确实接受常规Python字典,但密钥必须是(uri,localname)
对
super().startElementNS((None, 'div'), 'div', {(None, 'class'):'page'})