使用python通过标记文本进行XML搜索

时间:2015-07-03 12:22:35

标签: python xml

这是我的代码和XML:

def convertlist(l):
    if isinstance(l , (list, tuple)):
        return list(map(convertlist, l))
    elif isinstance(l , long):
        return int(l)
    else:
        return l
>>> l = [1L , 2L , [3L]]
>>> convertlist(l)
[1, 2, [3]]

我试图找到xml_string = """ <data> <user> <name>123</name> </user> <user> <name>456</name> </user> </data> """ import xml.etree.ElementTree as ET root = ET.fromstring(xml_string) 标记<user>的文字值等于123。

我尝试过:

<name>

这些尝试都没有奏效。我错过了什么?

错误我得到了:

result = root.findall("./user[name = '123']")
result = root.findall("./user[./name = '123']")
result = root.findall("./user[/name = '123']")
result = root.findall("./user[./name text() = '123']")

1 个答案:

答案 0 :(得分:4)

正如异常所说,似乎你在谓词中有语法错误,标签名称和值之间不应该有空格:

xml_string = """
<data>
    <user>
        <name>123</name>
    </user>
    <user>
        <name>456</name>
    </user>
</data>
"""

import xml.etree.ElementTree as ET
root = ET.fromstring(xml_string)

result = root.findall("./user[name='123']")

print result