我正在使用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 包含 (( 可能吗?