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

标签 python xml

这是我的代码和 XML:

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> 标签,其中 <name> 的文本值等于 123。

我尝试过的:

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']")

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

我得到的错误:

raise SyntaxError("invalid predicate") 
File "<string>", line None
SyntaxError: invalid predicate

最佳答案

如异常所述,谓词中似乎有语法错误,标记名称和值之间不应有空格:

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

关于python - 使用 python 通过标记文本搜索 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31206788/

相关文章:

python - 迭代和修改目录中的文件

python - 从 Python 访问 C 声明的嵌套结构

javascript - 解析 Google Stock XML

java - 在 XML 中传递 unicode 字符

html - Rails 应用程序上的奇怪错误,仅在一个浏览器上,一个 url "Below is a rendering of the page up to the first error."

python - 读取十六进制字符并使用 python 3 将它们转换为 utf-8

python - 从 Telegram 的机器人 API 获取投票结果和用户选择

python - 将正则表达式传递给 python 的 csv 模块或 numpy 的 genfromtxt/loadtxt 中的定界符字段?

PHP 5 soapClient 结果为空 __getLastResponse 显示正确的 XML

android - 抽屉中的可滚动页脚