Python elementtree很难提取数据

时间:2012-07-12 21:43:27

标签: python xml string file

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

2 个答案:

答案 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]