我實際上寫了一個庫,它完全按照你想象的方式來完成任務。該庫被稱爲「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類,它的屬性不是文本。)
XPath算作用戶友好嗎? http://stackoverflow.com/questions/8692/how-to-use-xpath-in-python – Welbog 2009-09-29 17:25:49
我會非常感興趣的Java版本! – Federer 2010-03-10 13:50:22