如何使用python打印特定的xml值?

时间:2013-02-12 19:12:07

标签: python xml xml-parsing

我有xml,如下所示

<api>
<apicat>
    <cat>
        <id>1</id>
        <name>testname</name>
    </cat>
    <cat>
        <id>2</id>
        <name>testname2</name>
    </cat>
    <cat>
        <id>3</id>
        <name>testname3</name>
    </cat>
</apicat>

如何打印id = 2的名称? 另请注意,如果xml没有以相同的顺序返回值,并且结果的数量是否超过10,000?

2 个答案:

答案 0 :(得分:0)

您可以使用带有表达式的模块轻松完成此操作:

from lxml import etree

file = "file://path/to/file.xml"
doc = etree.parse(file)

print doc.xpath('//cat[id=2]/name/text()')[0]

请参阅http://lxml.de/

Xpath tutorial

您的XML文件无效,此文件应为:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<api>
    <apicat>
        <cat>
            <id>1</id>
            <name>testname</name>
        </cat>
        <cat>
            <id>2</id>
            <name>testname2</name>
        </cat>
        <cat>
            <id>3</id>
            <name>testname3</name>
        </cat>
    </apicat>
</api>

答案 1 :(得分:0)

试试这个:

$ xpath -e '//cat[id=2]/name' your.xml