将MarkLogic EVAL REST服务输出返回为JSON
我正在制作一个演示,使用MarkLogic将从Outlook导出的电子邮件存储为XML,这样,当我离开Outlook时,它们就可以搜索和访问 我正在使用AngularJS前端调用自己的REST服务的本机MarkLogic REST服务,这些服务是使用Jersey用JAVA编写的 MarkLogic SEARCH REST服务可以很好地根据各种搜索条件返回文档引用列表,但我还希望显示存储在已查找文档中的信息 我希望避免多次REST调用,只返回所需的信息,因此我尝试使用evalREST服务来运行xQuery 返回XML(在多部分/混合消息中)效果很好,但我似乎无法取而代之地获取JSON,这将更加方便,并且对于大多数其他MarkLogic REST服务来说非常容易 我可以在xQuery中使用“json:transform-to-json()”,也可以在JAVA代码中将XML转换为json,但这在我看来并不优雅将MarkLogic EVAL REST服务输出返回为JSON,json,xml,rest,eval,marklogic,Json,Xml,Rest,Eval,Marklogic,我正在制作一个演示,使用MarkLogic将从Outlook导出的电子邮件存储为XML,这样,当我离开Outlook时,它们就可以搜索和访问 我正在使用AngularJS前端调用自己的REST服务的本机MarkLogic REST服务,这些服务是使用Jersey用JAVA编写的 MarkLogic SEARCH REST服务可以很好地根据各种搜索条件返回文档引用列表,但我还希望显示存储在已查找文档中的信息 我希望避免多次REST调用,只返回所需的信息,因此我尝试使用evalREST服务来运行xQ
有没有更有效的方法来实现我的目标?首先,json:transform to json对我来说非常优雅。当然,这并不总是正确的答案 我看到了三个你没有提到的选项
所有这些选项都不需要eval所需的特权,这是一件非常好的事情。由于eval允许在您的服务器上执行任意代码,因此它需要特殊权限,使用时应非常小心。在使用eval之前,还有两个选项(1)和(2)。Sam的答案就是我的建议。具体来说,我会为搜索提取文档数据设置一个搜索选项(这是一个搜索API选项。如果您发布请求,则可以在您发回的XML中添加该选项。如果您使用GET,则需要提前注册该选项并调用它。相关URL可提供帮助:
对于真正的繁重工作,您可以使用Sam描述中的服务器端转换。关于这一点,请注意。服务器端转换不是搜索API的一部分,而是REST API的一部分。仅提及它,您就可以了解在每种情况下使用的工具。首先,非常感谢您如此快速且大量地响应好的信息。很抱歉“不优雅”这个词可能不是最合适的。我的意思是,必须有一种比使用EVAL服务更好的方法,而EVAL服务在安全性方面并不理想。我已经使用“提取文档数据”进行了测试但不幸的是,正如您所解释的,它返回的是JSON和XML的混合,这并不理想。我认为XML和JSON只是从MarkLogic的角度表示相同信息的两种不同方式,但显然没有那么简单。也许我应该像Samplestack示例中那样将数据存储为JSON您建议的选项:在我看来,批量读取查询将每个文档作为多部分/混合消息的一个单独部分返回。应用转换时是否相同?是否有方法返回单个JSON?您是否有一个示例?我想我也需要查看自定义搜索片段。您会推荐什么作为最佳方法?我有f我最终选择将我的数据作为JSON存储在MarkLogic中,并使用“提取文档数据”,因为这是馈送Angular JS前端最简单的方法。非常感谢您的回复。
<search:result index="1" uri="/sample/collections/1.xml" path="fn:doc("/sample/collections/1.xml")" score="34816" confidence="0.5982239" fitness="0.6966695" href="/v1/documents?uri=%2Fsample%2Fcollections%2F1.xml" mimetype="application/xml" format="xml">
<search:snippet>
<search:match path="fn:doc("/sample/collections/1.xml")/x">
<search:highlight>watermellon</search:highlight>
</search:match>
</search:snippet>
</search:result>
"index":1,
"uri":"/sample/collections/1.xml",
"path":"fn:doc(\"/sample/collections/1.xml\")",
"score":34816,
"confidence":0.5982239,
"fitness":0.6966695,
"href":"/v1/documents?uri=%2Fsample%2Fcollections%2F1.xml",
"mimetype":"application/xml",
"format":"xml",
"matches":[
{
"path":"fn:doc(\"/sample/collections/1.xml\")/x",
"match-text":[
{
"highlight":"watermellon"
}
]
}
]
}