2011-12-17 56 views
0

我已經設置了一個自定義namespace lookup dictionary以將XML文件中的元素映射到ObjectifiedElement的子類。現在,我想添加一些數據到這些類的實例。但由於ObjectifiedElement的工作方式,添加一個屬性會導致元素被添加到元素樹,這不是我想要的。更重要的是,這不適用於所有Python類型;例如,不可能創建list類型的屬性。是否可以向ObjectifiedElement實例添加任意數據?

代替ElementBase,這似乎是可能的,但這意味着丟失ObjectifiedElement提供的功能。你可以說我只需要閱讀部分ObjectifiedElement。我想我可以添加一個__getattr__到我的子類來模擬這個,但我希望有另一種方法。

回答

0

我結束了有__getattr__()只是期待etree的find()

class SomewhatObjectifiedElement(etree.ElementBase): 
    nsmap = {'ns': 'http://www.my.org/namespace'} 

    def __getattr__(self, name): 
     return self.find('ns:' + name, self.nsmap) 

如果有這樣只會返回第一個元素數匹配,不像ObjectifiedElement的行爲,但它滿足我的應用程序(主要是它可以只有一個匹配,否則,我使用findall())。

相關問題