位的一个初学者的问题:

说我有一个方块的xml:

<root>
 <district>
  <house><room><door/><room></house>
 </district>
 <district>
  <street>
   <house>and so on</house>
  </street>

等等。

与ElementTree我可以这样做:

houses=doc.findall(".//house")

选择的所有房屋中的节点,而不管他们的父母。我想要什么现在要做的就是把每个家节点成一个单独的树对象。

一部分这样做的原因是,然后我要做另外一个发现:

door=houseXml.findall(".//door")

我可以做一些事情,如:

for _house in houses:
    houseXml=_house.getiterator

但是,这似乎并没有做什么我想要的。

我要去哪里错了吗?

有帮助吗?

解决方案

你可以打电话 findall 在元件返回的第一个 findall:

>>> doc = """<root>
...  <district>
...   <house><room><door/></room></house>
...  </district>
...  <district>
...   <street>
...    <house>and so on</house>
...   </street>
...  </district>
... </root>"""
>>>
>>> from xml.etree import cElementTree as ET
>>>
>>> r = ET.XML(doc)
>>>
>>> for house in r.findall('.//house'):
...   print house, house.findall('.//door')
...
<Element 'house' at 0xb7f3ea70> [<Element 'door' at 0xb7f3eab8>]
<Element 'house' at 0xb7f3eb00> []
>>>
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top