ElementTree findall()を使用して、特定のタグを持つXML内の要素を検索しています。結果をリストにしたいと思います。現在、要素を繰り返し処理し、各要素の.textを選択して、リストに追加しています。これを行うには、もっとエレガントな方法があると確信しています。
#!/usr/bin/python2.7
#
from xml.etree import ElementTree
import os
myXML = '''<root>
<project project_name="my_big_project">
<event name="my_first_event">
<location>London</location>
<location>Dublin</location>
<location>New York</location>
<month>January</month>
<year>2013</year>
</event>
</project>
</root>
'''
tree = ElementTree.fromstring(myXML)
for node in tree.findall('.//project'):
for element in node.findall('event'):
event_name=element.attrib.get('name')
print event_name
locations = []
if element.find('location') is not None:
for events in element.findall('location'):
locations.append(events.text)
# Could I use something like this instead?
# locations.append(''.join.text(*events) for events in element.findall('location'))
print locations
これを出力します(これは正しいですが、可能であれば、findall()の結果をテキスト形式でリストに直接割り当てたいと思います。
my_first_event
['London', 'Dublin', 'New York']