将MarkLogic EVAL REST服务输出返回为JSON

Séb*_*HON 2 xml rest json eval marklogic

我正在使用MarkLogic进行演示,以便将从Outlook导出的电子邮件存储为XML,这样当我离开Outlook时,它们仍然可以搜索和访问.

我正在使用AngularJS前端调用使用Jersey在JAVA中编写的自己的REST服务的本机MarkLogic REST服务.

MarkLogic SEARCH REST服务可以很好地根据各种搜索条件获取文档引用列表,但我还想显示存储在找到的文档中的信息.

我想避免多次REST调用并只返回所需的信息,因此我尝试使用EVAL REST服务来运行xQuery.

它可以很好地恢复XML(在多部分/混合消息中),但我似乎无法获得JSON,这对于大多数其他MarkLogic REST服务来说会更方便并且非常容易.

我可以在我的xQuery中使用"json:transform-to-json()"或者在我的JAVA代码中将XML转换为JSON,但这对我来说看起来并不优雅.

有没有更有效的方法来到我想去的地方?

Sam*_*ord 5

首先,json:transform-to-json对我来说似乎很优雅.但当然,并不总是正确的答案.

我看到你没有提到的三个选项.

  1. 服务器端转换 - REST搜索支持服务器端转换,当您通过查询执行批量读取时,转换会转换每个文档.那些服务器端转换可以生成您需要的任何json.
  2. search extract-document-data - 这是提取部分文档的最简单方法.但是,如果您的文档是json以匹配您的json响应,这似乎是最好的.否则你在json响应中得到xml...除非你对此好.
  3. 自定义搜索片段 - 另一种非常强大的自定义搜索返回方式

所有这些选项都不需要eval所需的权限,这是一件非常好的事情.由于eval允许在服务器上执行任意代码,因此它需要特殊权限,因此应谨慎使用.使用eval之前的另外两个选项是(1)安装在http服务器中的自定义xquery,以及(2)REST扩展.