这是XML:
<top>
<target>
<name>TARGET_NAME_1</name>
<error_count>5</error_count>
<error_examples>a string goes here</error_examples>
</target>
<target>
<name>TARGET_NAME_2</name>
<error_count>5</error_count>
<error_examples>a string goes here</error_examples>
</target>
</top>
以下是我正在尝试的内容:
tree = ETREE.parse(str(XML_FILE_PATH)) #this seems to work
top = tree.getroot()
targets = top.findall('target')
for target in targets:
print target
这给了我一个<Element target at HEX_NUMBER>
。那么如何提取每个目标的价值,即TARGET_NAME_1
?
干杯
编辑 - 我应该提一下,我使用的是Python 2.6版
答案 0 :(得分:2)
试试target.get('name')
。
我从http://docs.python.org/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.get的文档中得到了这些内容,看起来它正是您正在寻找的内容。
答案 1 :(得分:2)
假设你要打印所有名字,你可以这样做:
import xml.etree.ElementTree as ET
tree = ET.parse("people.xml")
top = tree.getroot()
for target in top:
for x in target:
if x.tag == 'name': print x.text
获取第一个目标的名称更短:
print top[0][0].text
但由于它依赖于商品订单,甚至不检查商品是否合适,您可能不应该这样做
因此,为了获得所有名称和名称,我可能会使用列表理解,如下所示:
[target.find('name').text for target in top]