繁体   English   中英

Python ElementTree“无效的后代”错误

[英]Python ElementTree “Invalid descendant” error

我有一个XML文件, foo.xml

<foo>
    <bar>
        <baz phrase="hello"/>
    </bar>
    <quux phrase="goodbye"/>
</foo>

我用这个Python代码解析它:

import lxml.etree as ET
# or if you don't have lxml: import xml.etree.ElementTree as ET

doc = ET.parse('foo.xml').getroot()

for elem in doc.findall('*[@phrase]'):
    print(elem)

这给了我:

<Element 'quux' at 0x7fa1419a1d18>

现在我想找到带有phrase属性的所有元素,所以我尝试'.//[@phrase]'但是然后findall()失败了:

SyntaxError: invalid descendant

我不明白什么是错的。 如果我使用内置的xml.etree.ElementTree而不是lxml则会出现相同的错误消息。

请注意'.//'有效,但返回bar, baz, quux ,我不想要bar因为它没有phrase属性。

你需要*作为".//*[@phrase]"标签名称

暂无
暂无

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

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