Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.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
MarkLogic:将映射对象从Java传递到XQuery_Java_Xquery_Marklogic - Fatal编程技术网

MarkLogic:将映射对象从Java传递到XQuery

MarkLogic:将映射对象从Java传递到XQuery,java,xquery,marklogic,Java,Xquery,Marklogic,我想通过MarkLogicJavaAPI将一个简单的Java映射传递给一个XQuery脚本。脚本已部署到服务器上的/ext目录,并按如下方式启动: xquery version "1.0-ml"; declare variable $dr as xs:string external; declare variable $en as xs:string external; declare variable $fi as map:map external; ... Map<String,

我想通过MarkLogicJavaAPI将一个简单的Java映射传递给一个XQuery脚本。脚本已部署到服务器上的/ext目录,并按如下方式启动:

xquery version "1.0-ml";

declare variable $dr as xs:string external;
declare variable $en as xs:string external;
declare variable $fi as map:map external;
...
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");

ServerEvaluationCall invoker = client.newServerEval();
invoker.addVariable("dr", "foo");
invoker.addVariable("en", "bar");
invoker.addVariableAs("fi", map);
String response = invoker.evalAs(String.class);
我正在使用MarkLogic站点上描述的模式:模块调用的基本步骤

我的Java代码如下所示:

xquery version "1.0-ml";

declare variable $dr as xs:string external;
declare variable $en as xs:string external;
declare variable $fi as map:map external;
...
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");

ServerEvaluationCall invoker = client.newServerEval();
invoker.addVariable("dr", "foo");
invoker.addVariable("en", "bar");
invoker.addVariableAs("fi", map);
String response = invoker.evalAs(String.class);

我想我需要在将映射发送到ML之前对其进行转换,或者使用一个处理程序类,但我无法解决它或找到任何这样的示例。以前有人这样做过吗?

应该可以将Jackson JSON对象传递给XQuery外部变量。XQuery中的值应该是XQuery映射或JSON节点。如果是JSON节点,函数可以将该值转换为XQuery映射

对于Java部分,请查看介绍的示例,因为以下代码使用Jackson对象映射器将外部变量值设置为JSON对象:


希望这会有所帮助,

这真的很有帮助。我只是通过Jackson在Java中序列化映射,并通过xdmp:fromjson字符串在Xquery中反序列化它。很有魅力,非常感谢!