私は実際にあなたが想像した通りに物事を行うライブラリを書きました。ライブラリは「xe」と呼ばれ、次の場所から入手できます。http://home.avvanta.com/~steveha/xe.html
xeはXMLをインポートして、オブジェクト指向の方法でデータを操作できるようにすることができます。実際にはxml.dom.minidomを使用して解析を実行しますが、結果のツリーをウォークオーバーし、データをxeオブジェクトにパックします。
編集:さて、私は先に進んであなたの例をxeに実装したので、それがどのように機能するかを見ることができます。示したXMLを実装するためのクラスは次のとおりです。
import xe
class Node(xe.TextElement):
def __init__(self, text="", value=None):
xe.TextElement.__init__(self, "node", text)
if value is not None:
self.attrs["value"] = value
class Root(xe.NestElement):
def __init__(self):
xe.NestElement.__init__(self, "root")
self.node = Node()
そして、これが上記の使用例です。サンプルXMLを「example.xml」というファイルに入れましたが、それを文字列に入れて文字列を渡すこともできます。
>>> root = Root()
>>> print root
<root/>
>>> root.import_xml("example.xml")
<Root object at 0xb7e0c52c>
>>> print root
<root>
<node value="30">text</node>
</root>
>>> print root.node.attrs["value"]
30
>>>
この例では、「値」のタイプは文字列になることに注意してください。別のタイプの属性が本当に必要な場合は、少しの作業でそれも可能ですが、この例では気にしませんでした。(PyFeedを見ると、テキストではない属性を持つOPMLのクラスがあります。)