使用BaseX查询XML流/字符串的Java示例

时间:2014-02-20 09:09:37

标签: xml xquery basex

我尝试编写Java代码以在本地模式下使用BaseX来查询通过点击Web服务返回的XML。

我不确定传递XML的不同方式。我应该

  1. 将外部变量与XML数据绑定并传递给XQuery,然后使用fn:parse()
  2. 使用fetch模块
  3. 还是有其他更好的方法吗?
  4. 是否有其他具有类似功能的XQuery 3.0处理器和内置模块?

1 个答案:

答案 0 :(得分:2)

解决方案1:绑定外部变量

这意味着您首先必须将XML数据存储为java变量,然后将其传递给BaseX。你当然可以这样做,它看起来像那样:

declare variable $t as xs:string external;
parse-xml($t)

解决方案2:使用fetch()

fetch:text()fetch:binary()是可流式传输的,但parse-xml会实现字符串(请注意,函数称为parse-xml()而不是parse(),如您所述问题

parse-xml(fetch:text("YOUR-URI"))

解决方案3:直接在XQuery中获取数据

您还可以使用http模块从Web服务中简单地检索数据:

http:send-request(<http:request method='get'></http:request>, "YOUR-URI")[2]

如果您不再需要Java代码中的结果,那么解决方案3在我看来是最简单的方法。否则你可能想坚持解决方案1。