我正在制作一个演示,使用 MarkLogic 将从 Outlook 导出的电子邮件存储为 XML,以便在我离开 Outlook 时仍可搜索和访问它们。
我正在使用 AngularJS 前端调用使用 Jersey 以 JAVA 编写的自己的 REST 服务的 native MarkLogic REST 服务。
MarkLogic SEARCH REST 服务非常适合根据各种搜索条件取回对文档的引用列表,但我还想显示存储在找到的文档中的信息。
我想避免多次 REST 调用并只取回所需的信息,因此我尝试使用 EVAL REST 服务来运行 xQuery。
取回 XML(在多部分/混合消息中)效果很好,但我似乎无法取而代之的是 JSON,这会更方便,并且对于大多数其他 MarkLogic REST 服务来说非常容易。
我可以在我的 xQuery 中使用“json:transform-to-json()”,或者在我的 JAVA 代码中将 XML 转换为 JSON,但这对我来说看起来不太优雅。
是否有更有效的方法到达我想去的地方?
最佳答案
首先,json:transform-to-json 对我来说似乎非常优雅。但当然,这并不总是正确的答案。
我看到了三个您没有提到的选项。
- 服务器端转换 - REST 搜索支持服务器端转换,可在您执行 bulk read by query 时转换每个文档.这些服务器端转换可以生成您需要的任何 json。
- search extract-document-data - 这是提取文档部分的最简单方法。但是,如果您的文档是 json 以匹配您的 json 响应,这似乎是最好的。否则你会在你的 json 响应中得到 xml。 . .除非你同意。
- custom search snippets - 自定义搜索返回内容的另一种非常强大的方法
所有这些选项都不需要 eval 所需的特权,这是一件非常好的事情。由于 eval 允许在您的服务器上执行任意代码,因此它需要特殊权限并且应该非常小心地使用。使用 eval 之前的另外两个选项是 (1) custom xquery installed in an http server , 和 (2) REST extensions .
关于json - 将 MarkLogic EVAL REST 服务输出作为 JSON 返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36132347/