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 に答える