Ser*_*bin 4 python lxml elementtree python-2.7
我有一个 xml,其中有很多不同的节点,具有不同的标签,但属性相同。是否可以找到所有这些节点?
我知道,如果所有节点都具有相同的标签,则可以按属性查找所有节点:
root.findall(".//tag[@attrib]")
Run Code Online (Sandbox Code Playgroud)
但就我而言,它们都有不同的标签。像这样的东西不起作用:
root.findall(".//[@attrib]")
Run Code Online (Sandbox Code Playgroud)
在 XPath 中,您可以用来*引用任何名称的元素,也可以用来@*引用任何名称的属性:
root.findall(".//*[@attrib]")
Run Code Online (Sandbox Code Playgroud)
旁注:
请注意,如果您确实在使用lxml(不仅仅是意外地用lxml标记了问题),我建议使用xpath()method 而不是findall(). 前者具有更好的 XPath 支持。例如,当您需要查找有限名称集的元素(例如foo和 )时bar,可以将以下 XPath 表达式与xpath()method 结合使用:
root.xpath("//*[self::foo or self::bar][@attrib]")
Run Code Online (Sandbox Code Playgroud)
传递给上面相同的表达式findall()将导致错误:
语法错误:在前缀映射中找不到前缀“self”
| 归档时间: |
|
| 查看次数: |
5389 次 |
| 最近记录: |