我在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