0

ここで少し初心者の質問:

xml のブロックがあるとします。

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

ElementTree を使用すると、次のことができます。

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

親に関係なく、すべての家ノードを選択します。ここでやりたいことは、家の各ノードを個別のツリー オブジェクトに変換することです。

これを行う理由の 1 つは、別の検索を実行したいからです。

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

私は次のようなことができます:

for _house in houses:
    houseXml=_house.getiterator

しかし、これは私が望むことをしていないようです。

どこが間違っていますか?

4

1 に答える 1

2

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> []
>>>
于 2010-03-25T12:57:14.303 に答える