Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否有方法将字符串数组作为服务器端Xquery脚本的变量传递?_Java_Xml_Spring Boot_Xquery_Marklogic - Fatal编程技术网

Java 是否有方法将字符串数组作为服务器端Xquery脚本的变量传递?

Java 是否有方法将字符串数组作为服务器端Xquery脚本的变量传递?,java,xml,spring-boot,xquery,marklogic,Java,Xml,Spring Boot,Xquery,Marklogic,我试图通过实现由java调用触发的服务器端xquery搜索来改进Spring引导服务的搜索 我试过一些有环的东西,但没用 变量应该插入到xqy脚本中,以获得相应的 搜索参数的结果。正如您所确定的,addVariable()只接受单个值 您可以将值列表序列化为JSON数组,并使用JSONWriteHandle发送JSON数组。然后,在XQuery中,使用xdmp:from-json()将json数组节点转换为内存中的数组 或者,如果您使用的是最新版本的MarkLogic 9,则可以使用数据服务生

我试图通过实现由java调用触发的服务器端xquery搜索来改进Spring引导服务的搜索

我试过一些有环的东西,但没用

变量应该插入到xqy脚本中,以获得相应的
搜索参数的结果。

正如您所确定的,addVariable()只接受单个值

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

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


希望这能有所帮助,

非常感谢,我想我会选择第一种方法,因为数据服务方法似乎有点广泛。或者甚至可以将它们作为单个字符串传递,用komma分隔,并在xquery中使用tokenize函数。不过非常感谢!很抱歉回答晚了,非常感谢你的帮助。无论如何,我选择了一种更简单的方法:我给这个方法一个字符串列表作为参数,将它变成一个字符串,传递给xquery脚本,在那里我再次将它拆分成一个序列。
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);
....