XPATH在python中选择具有特定属性的根元素和所有子元素

2024-09-19 23:33:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我想获取所有包含属性x的元素,包括根节点。我目前所拥有的是,除了不包括根节点外,它还能工作。从打印输出中可以看到,它选择B和Ca元素。但是,输出也应该包括A,即[elementa,elementb,elementca]。如何让它也抓取根节点?在

from lxml import etree as ET
expr='''
<A x="1">
    <B z="1">
        <C  y="1"/>
    </B>
    <B x="1">
        <Ca  x="1" y="2"/>
    </B>
</A>

'''
expr_root=ET.fromstring(expr)
print(expr_root.findall(".//*[@x]")) #[<Element B at 0xd0118c8>, <Element Ca at 0xd011b48>]

Tags: from元素属性节点rootelementlxmlat
2条回答

您可以尝试“/[@A]”,它将选择所有具有属性A的元素。 在您的情况下“/[@x]”。在

希望能有所帮助。在

您可以使用^{}

expr_root.xpath(".//descendant-or-self::*[@x]")

演示:

^{pr2}$

相关问题 更多 >