ElementTree.getchildren()のような要素ツリーのすべてのサブ要素を取得する方法を知りたいのですが、Pythonのバージョン2.7以降、getchildren()は廃止されて以来、私はもう使用したくありません。私はまだそれを現在でも使用することができます。Python ElementTreeで要素ツリーのすべてのサブ要素を取得するには?
ありがとうございました。
ElementTree.getchildren()のような要素ツリーのすべてのサブ要素を取得する方法を知りたいのですが、Pythonのバージョン2.7以降、getchildren()は廃止されて以来、私はもう使用したくありません。私はまだそれを現在でも使用することができます。Python ElementTreeで要素ツリーのすべてのサブ要素を取得するには?
ありがとうございました。
elem
のすべてのサブ要素(子孫):
all_descendants = list(elem.iter())
より完全な例:あなたがしたい場合は
>>> [elem.tag for elem in a.iter() if elem is not a]
['b', 'e', 'c', 'd', 'f', 'g']
:
>>> import xml.etree.ElementTree as ET
>>> a = ET.Element('a')
>>> b = ET.SubElement(a, 'b')
>>> c = ET.SubElement(a, 'c')
>>> d = ET.SubElement(a, 'd')
>>> e = ET.SubElement(b, 'e')
>>> f = ET.SubElement(d, 'f')
>>> g = ET.SubElement(d, 'g')
>>> [elem.tag for elem in a.iter()]
['a', 'b', 'e', 'c', 'd', 'f', 'g']
ルート自体を除外するために、すべての要素 'a'を取得し、使用することができます:
a_lst = list(elem.iter('a'))
elem
も「a」の場合は、それが含まれます。
既存の回答では、すべての子供が見つかりません。このソリューションではなくETreeのBeautifulSoupを使用していますが、すべての子供たちを見つけるでしょう、だけではなく、トップレベルの:
from bs4 import BeautifulSoup
with open(filename) as f:
soup = BeautifulSoup(f, 'xml')
results = soup.find_all('element_name')
申し訳ございませんイーライ、多分私は自分自身を理解しなかった、私はすべてのサブ要素を取得したいです、ルートではありません。ここではルートは望ましくない。あなたのメソッドにはルートオブジェクトも含まれていると思います。 – j5shi
@Steven:更新を参照 –
しかし、 'a'要素にネストされたタグ 'a'を持つ複数のsturctがあり、すべての 'a'構造体のすべてのサブ要素を取得したいのですが? – j5shi