-1

我有如下所示的 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?

4

2 回答 2

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 教程

您的 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>
于 2013-02-12T19:14:50.713 回答
0

试试这个:

$ xpath -e '//cat[id=2]/name' your.xml
于 2013-02-12T19:26:36.790 回答