【问题标题】:Getting error "invalid predicate" in lxml when using xpath使用 xpath 时在 lxml 中出现错误“无效谓词”
【发布时间】:2019-09-23 20:08:52
【问题描述】:

我有一个包含节目的 xml 文件。我想要一个 xpath 查询来从这个 xml 中获取一个条目。

使用 QXmlEdit 和 Xmplify 等工具查询 xml 时,使用以下查询://sendung[standard/stammdaten/metadaten/idnr[text() = '11223344' ]] 我收到了我期望的结果。在 python 3.7 上使用 lxml 的相同查询不起作用。

root.findall(".//dmb:sendung[dmb:standard/dmb:stammdaten/dmb:metadaten/dmb:idnr[text()='{}']]".format(id), namespaces=self.__namespace_map)

我得到的错误是SyntaxError: invalid predicate

【问题讨论】:

  • 我可能是错的,但我相信findall() 的 XPath 可以使用是有限的(基本上与 ElementTree 的限制相同)。尝试使用xpath() 而不是findall()

标签: xml python-3.x xpath lxml


【解决方案1】:

如果您使用xpath() 方法,它应该可以工作。 findall()does not support 所有的 XPath 1.0。在您的表达中,有两个功能不起作用:

  • 嵌套谓词。
  • text() 节点测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-12
    • 2016-02-23
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多