2017-04-10 75 views
0

我正在使用lxml.sax修改XML文檔,並且我想將自定義屬性傳遞給startElementNS方法。我最初的代碼是這樣的:如何通過lxml.sax接口傳遞自定義屬性?

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) 

然而,隨着documentation便籤,attributes參數需要一個Attributes對象,而不是一個普通的字典。調試發現確切的類型是sax.xmlreader.AttributesNSImpl,但這個類沒有正式記錄,我似乎無法直接實例化它。

是否有任何(官方或hacky)方法爲startElementNS方法提供自己的屬性?

回答

0

一些更多的試驗和錯誤的日子已經透露,startElementNS功能確實接受常規的Python字典,但鑰匙必須(uri, localname)雙。

super().startElementNS((None, 'div'), 'div', {(None, 'class'):'page'}) 
相關問題