Pythons XML解析库Etree可以采用如下的复杂XPath查询吗?
# Note the "[text()=\"USER_4D\"]"
assert root.find("Group/EnvConfig/Overrides/Override/Key[text()=\"USER_4D\"]") != None
我在上面的行中收到错误SyntaxError: invalid predicate
。如果我删除'谓词'[text()=\"USER_4D\"]
,则不会引发任何期望/错误。
导致此错误的原因是什么?我的XPath格式不正确或者Etree不能执行这些类型的XPath查询吗?你能就如何解决这个问题提供建议吗?
我希望我不需要使用自定义XML Parsing库,因为我只是想在构建的XML Parsing库中使用Pythons进行一些简单的单元测试。是否有其他本机Python库可以处理此XPath查询?
答案 0 :(得分:1)
ElementTree不支持问题中使用的XPath表达式。请参阅http://docs.python.org/2/library/xml.etree.elementtree.html#xpath-support。
要声明文本内容Key
存在USER_4D
元素,您可以使用以下内容:
Key = root.find("Group/EnvConfig/Overrides/Override/Key")
assert Key != None # Element exists
assert Key.text == "USER_4D" # Element has specific content