2

这是 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 版

4

2 回答 2

2

试试target.get('name')

我是从http://docs.python.org/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.get的文档中得到的,看起来它可以满足您的需求。

于 2012-07-12T21:46:10.250 回答
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]
于 2012-07-12T21:54:58.613 回答