2016-07-11 16 views
0

XMLファイルの束からいくつかのデータを抽出しようとしています。今、問題は、すべてのファイルの構造が全く同じではないため、子を繰り返して値を抽出するだけでは困難です。Xml - Pythonを使用してタグで要素を検索

このようなxmlドキュメントのためのpythonの方法はありますか?getElementByTag()私はそのようなメソッドがC#、C++ユーザーには利用可能だが、Pythonには何も見つかりませんでした。

ご協力いただければ幸いです。

答えて

2

はい、パッケージxml.etreeには、XMLに関連する組み込み関数があります。 (python2でも利用可能)

具体的には、findallです。例えば

import xml.etree.ElementTree as ET 
tree = ET.fromstring(some_xml_data) 
all_name_elements = tree.findall('*/name') 

付:

In [1]: some_xml_data = "<help><person><name>dean</name></person></help>" 

私は、次を得る:

In [10]: tree.findall("*/name") 
Out[10]: [<Element 'name' at 0x7ff921edd390>] 
+0

'findall'は、子供たちだけのレベルで検索します。しかし、私は木の一番下に向かう何かを探していました。 –

+0

ツリーのルート要素に 'findAll'を使用すると、すべてのサブ要素が検索されます。また、ルート要素の代わりにElementTreeオブジェクトでも使用できます。次に、ルートを検索します。 –

+0

それは私にとってはうまくいかない。それは子供レベルのみを検索し、それ以下のものは検索しません。また、あなたが投稿した答えにあなたの構文が間違っています。ありがとう! –

関連する問題