Python下的XQuery库[关闭]

Posted

技术标签:

【中文标题】Python下的XQuery库[关闭]【英文标题】:XQuery library under Python [closed] 【发布时间】:2011-01-09 04:06:53 【问题描述】:

是否有任何现有的方法可以在 python 下运行 XQuery? (换句话说,不是开始自己构建解析器)。

我有大量的遗留 XQuery 想要移植到我们的新系统,或者更确切地说,我想要 移植框架而不是 XQuery。

因此:是否有任何库允许我在 python 下运行 XQuery?

【问题讨论】:

【参考方案1】:

有点……

查看W3C implementations list for XQuery有:

    Python bindings for Zorba Sedna 是一个免费的原生 XML 数据库,带有用于 Python 的 API。

一些使用 Zorba 的 Python 示例,来自 here

import sys
import zorba_api

def example1(zorba):
  xquery = zorba.compileQuery("1+2")
  print xquery.printPlanAsXML()
  print xquery.execute()
  return

def example2(zorba):
  xquery = zorba.compileQuery("(1,2,3,4,5)")
  iter = xquery.iterator()
  iter.open()
  item = zorba_api.Item_createEmptyItem()
  while iter.next(item):
    print item.getStringValue()
  iter.close()
  iter.destroy()
  return

def example3(zorba):
  try:
    xquery = zorba.compileQuery("1 div 0")
    print xquery.execute()
  except RuntimeError, e:
    print e
  return

该列表中可能有可以轻松绑定到 Python 的 C 实现。希望这会有所帮助,看到这么少的实现让我有些惊讶。虽然,我认为 XQuery 并不是 XML 工具中最需要的。

【讨论】:

是的,Zobra 似乎就是我要找的东西,谢谢 :) Zorba 在 UBUNTU 工作? github.com/zorba-processor/zorba/issues/10【参考方案2】:

您可以使用Jython 来运行Python 代码——这使您可以访问Java 世界中的一些XQuery 处理器。例如Saxon。

【讨论】:

【参考方案3】:

Zorba 1.2 在 python 中工作。安装后,您将在 zorba 文件夹下获得一个 python 文件夹。将它附加到 sys.path,还带有 zorba\bin 文件夹。在所有操作之后 import "zorba_api" 将起作用!

【讨论】:

【参考方案4】:

我遇到了像 Ted 这样的问题,并尝试使用 vadim 的回答。 但是,我仍然无法正确加载 zorba_api,抱怨“ImportError DLL load failed”(不知道是哪一个,使用 %1 作为好昵称)。

终于,我得到了解决方案:

环境

WindowsXP Python 2.6 安装在 c:\Python26

安装

Zorba 1.2 或 1.4 安装到标准位置 Zorba bin 的路径作为PATH 中的第一个项目 来自 Zorba bin\python 的两个文件(zorba_api.py_zorba_api.pyd)都移到了 C:\Python26\LIB\site-packages

结果,我能够从我计算机中的任何文件夹运行C:\Program Files\Zorba XQuery Processor 1.4.0\share\doc\zorba-1.4.0\python\examples\python_test.py,即使没有 python 行,修改 PATH

注意:

PATH 问题可能与那里的字符串太长有关。 Process Monitor 对查找无法加载的 DLL 很有帮助

【讨论】:

以上是关于Python下的XQuery库[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

了解小程序开发库xquery

XPath与Xquery

XQuery:将日期时间与毫秒进行比较

XQuery FLWOR 表达式

如何编写可以测试正在使用的 XQuery 版本的 XQuery?

调试 XQuery 程序