繁体   English   中英

xml.etree.ElementTree findall

[英]xml.etree.ElementTree findall

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

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

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

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

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

Rob
Robert
chifforobe

您可以使用contains()函数,但这仅在您切换到lxml.etree而不是xml.etree.ElementTree ,后者仅具有部分/有限的 XPath 支持

import lxml.etree as ET

tree = ET.parse("input.xml")
root = tree.getroot()

root.xpath("./player[contains(@name, 'rob')]")

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM