如何在Python中使用elementtree查找没有特定属性的元素

时间:2019-06-18 13:10:20

标签: python xml elementtree

我在Windows计算机上将Python 3.7.1与ElementTree一起使用。我有一个巨大的XML文件,想打印出所有没有特定属性的特定元素的文本。

我正在使用XPath使用findall()函数。我尝试在XPath中使用not(),但它显示了错误“ SyntaxError:无效谓词”。当尝试查找具有某些属性的元素时,我已经成功地做到了这一点。问题纯粹是我无法弄清楚如何对其求反,并说该元素不应具有特定的属性。

XML文件的简化示例:

<Book>
    <Text language="EN">Hello.</Text>
    <Text language="DE">Hallo.</Text>
    <Text>Hola.</Text>
</Book>

我想打印出第三个“文本”元素的文本,即“ Hola”。

我在Python中的代码:

import xml.etree.ElementTree as ET

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

查找所有WITH属性'language'(成功,并显示文本Hello.Hallo。):

for a in root.findall("./Text[@language]"):
    print(a.text)

找到所有WITHOUT属性“ language”:

for b in root.findall("./Text[not(@language)]"):
    print(b.text)

这不起作用。如何找到没有属性的元素?

我希望输出很简单:

Hola.

但是我得到了错误:

SyntaxError: invalid predicate

0 个答案:

没有答案