gpt4 book ai didi

python - 在 python 中评估 Xpath2.0

转载 作者:太空宇宙 更新时间:2023-11-03 13:27:30 26 4
gpt4 key购买 nike

我有一个 XPath 表达式,如下所示。

if(replace(//p[1]/text(),'H','h') = 'hello') then //p[1]/text() else if(//p[1]/text() = 'world') then //p[2]/text() else 'notFound'

我想显示哪个“if”表达式有效。

e.g //p[1]/text() if first 'if' expression worked.

“If”表达式可以嵌套 if、for 循环和 xpath2.0 函数。

我找不到任何用于 python 的 xpath2.0 库。所以我尝试转换这个 Js library对于 python,我仍然可以将 xpath2.0 表达式拆分为词法分析器,但不能将其完全转换为 python。

如果有的话,给我推荐一些用于 python 的 Xpath2.0 库。还有如何解释 XPath 表达式并显示表达式的哪一部分起作用?

最佳答案

如您所知,lxml , Python 的 XML/XPath 支持的基石,只有特性

XPath 1.0, XSLT 1.0 and the EXSLT extensions through libxml2 and libxslt

我们还有一些选择。

我最近研究了这个主题(特别是 Python 的 XQuery 支持)。
有关 XML Query Implementations 的引用列表,请参阅 W3C .

  1. 带有 XPath 2+ 和 EXSLT 扩展的 Python 模块(例如 EXSLT 用于正则表达式 match ing)
    some modules on PiPy部分提供 XPath 2.0+ 功能。

  2. 有一些实现 XPath/XQuery 2.0 函数的 OSS XML/NoSQL-DBMS,例如

    • Zorba ,XQuery 1.0/2.0 的开源可移植可嵌入 C++ 实现,具有 Python 绑定(bind)(此 question 有一些指针),
    • 以及Sedna和一些商业数据库管理系统。根据您的项目,这可能是一个不错的选择。
  3. 我相信Saxon/C (by Michael Kay )用Cython是最有希望的路。
    在使用Boost.Python之前试过了在 pysaxon .
    更新:A Saxon/C extension for Python 3同时出版。

  4. 您可以使用子进程调用 CLI XML 处理器(如建议的 here ),例如subprocess.call(["saxon", "-o:output.xml", "-s:file.xml", "file.xslt"])

  5. 另一个选项是使用 XSLT/XPath/XQuery with saxon and/or other Java XML classesJython .

  6. 最后,您可以设置一个 Web 服务,使用 Java、.NET 等语言为您完成繁重的工作,并提供适当的 XPath 3+ 支持(Kay 也建议 here ).

仍然有些令人失望,尤其是对于像 Python 这样的大型语言。

关于python - 在 python 中评估 Xpath2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52707456/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com