有没有办法将字符串数组作为变量传递给服务器端Xquery脚本?

时间:2019-05-28 13:35:36

标签: java xml spring-boot xquery marklogic

我正在尝试通过实现由Java调用触发的服务器端xquery搜索来改善对Spring-Boot Services的搜索

我尝试了一些带有循环的东西,但是没有用

....

protected DatabaseClient databaseClient;

public DocumentDTO searchDocument(String language, String documentId, String... culsterIds) throws JAXBException {
        ServerEvaluationCall invoker = databaseClient.newServerEval();
      invoker.modulePath("/main/searchForDocuments.xqy")
                .addVariable("language", language)
                .addVariable("documentId", documentId)
                .addVariable("clusterIds", consentTemplateIds);
....

应将变量插入xqy脚本中以获取相应的变量 参数的搜索结果。

1 个答案:

答案 0 :(得分:1)

您已经确定,addVariable()仅采用单个值。

您可以将值列表序列化为JSON数组,然后使用JSONWriteHandle发送JSON数组。然后,在XQuery中,使用xdmp:from-json()将JSON数组节点转换为内存数组。

或者,如果您使用的是MarkLogic 9的最新版本,则可以使用数据服务来生成为端点模块指定的客户端接口:

http://docs.marklogic.com/guide/java/DataServices

希望有帮助,