Python下的XQuery库

22

有没有现成的方法在Python中运行XQuery?(换句话说,不需要自己构建解析器)。

我有许多遗留的XQuery代码想要移植到我们的新系统中,或者更准确地说,我想移植框架而非XQuery。

因此:有没有允许我在Python下运行XQuery的库?

4个回答

14

大概就是这样...

浏览W3C XQuery实现列表,有:

  1. Zorba的Python绑定
  2. Sedna是一个免费的本地XML数据库,具有针对Python的API。

这里有一些来自此处的Zorba Python示例:

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

列表中可能会有一些C实现,可以方便地绑定到Python上。希望这可以帮助你,我有点惊讶看到如此少的实现。虽然,我想XQuery并不是XML工具中最受欢迎的。


1
是的,Zobra似乎是我正在寻找的,谢谢 :) - Ooki
Zorba正在UBUNTU上工作吗?https://github.com/zorba-processor/zorba/issues/10 - Peter Krauss

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

0

我遇到了像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,甚至不需要修改PATH中的python行。

NB:

  • PATH问题可能与字符串过长有关。
  • Process Monitor对于查找无法加载的DLL非常有帮助。

0

Zorba 1.2可以从Python中运行。安装后,您将在zorba文件夹下获得一个Python文件夹。将其与zorba\bin文件夹一起附加到sys.path中。完成所有操作后,导入“zorba_api”将起作用!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接