2011-01-27 56 views
0

我有匹配DTD獲取XML文檔的一部分在Python

<!ELEMENT root (node, notinteresting> 
<!ELEMENT node (node*)> 
<!ELEMENT notinteresting (#PCDATA)> 

XML文件,我想找回最頂層節點(在XPath中:/root/node)這樣的文件的下面這一切,忽視了notinteresting位。我如何在幾行Python中做到這一點?速度/內存消耗不是問題。我想要一些東西,我可以print

+0

你想檢索根元素或從根開始的完整文檔? – karlcow 2011-01-27 11:47:47

+0

@karlcow:最上面的`node`和它下面的所有東西。我將編輯該問題。 – 2011-01-27 11:49:19

+0

啊好的。我會修改一下代碼。 – karlcow 2011-01-27 11:53:29

回答

3

您可以使用elementtree API,這取決於您將使用的導入版本可能會略有不同。你需要的版本> = python 2.7

from xml.etree.ElementTree import ElementTree 
tree = ElementTree() 
tree.parse("yourdoc.xml") 
roottree = tree.getroot() 

然後它給你做類似的事情的可能性。

for c in roottree.getchildren(): 

請注意,如果你只爲你輸入一個字符串,而不是解析你可以使用fromstring()

更新:您還可以使用,如果「根」是XML文件的根元素

roottree = tree.find('root') 
0

看一看2個模塊,

1)minidom

2)ElementTree

兩者都允許你做你想做的事,儘管方式稍有不同。