xml.etree.ElementTree findall



我正在使用xml.etree.ElementTree解析XML文件。我想根据名称属性查找元素。

fnd = root.findall("./player[@name='Pqp239']")

但是,这只会找到名称的完全匹配项。您将如何查找名称中包含名称一部分的元素?所以它会是这样的

fnd = root.findall("./player[@name='rob']")

会找到所有名称包含 rob 的 elemnts,如下所示:

Rob
Robert
chifforobe
您可以使用

contains()函数,但这只有在切换到lxml.etree而不是仅部分/有限 XPath 支持的xml.etree.ElementTree时才有效:

import lxml.etree as ET
tree = ET.parse("input.xml")
root = tree.getroot()
root.xpath("./player[contains(@name, 'rob')]")

但请注意,要使部分匹配不区分大小写,您需要另外应用 translate() 函数:

  • 不区分大小写的 xpath 包含 (( 可能吗?

最新更新