在Java中转义Scratch-Built XQuery

时间:2014-02-03 20:05:07

标签: java xquery marklogic

我正在开发一个将在MarkLogic服务器上构建和执行XQueries的应用程序。我需要转义一些输入字符串,以确保它们不会搞砸查询。是否有任何现有的Java代码可以处理这个问题?我想避免重新发明这个轮子。

2 个答案:

答案 0 :(得分:3)

如果使用像XQJ这样的库,它可以绑定外部XQuery变量。通过这种方式,库应该处理转义任何敏感值并将它们注入到XQuery中。有一个用于MarkLogic的XQJ库,可从xqj.net获得。

答案 1 :(得分:2)

使用内置语言功能:XQuery提供外部变量,XCC API可以从Java设置它们。有关“使用查询传递变量”下的示例,请参阅http://docs.marklogic.com/javadoc/xcc/overview-summary.html。这是一个简单的:

Session session = contentSource.newSession("mydatabase");
Request request = session.newAdhocQuery(
    "xquery version \"1.0-ml\";\n" +
    "declare variable $myvar as xs:string external;\n" +
    "data($myvar)");

// create Variable "myvar", bind to Request, ignore return value
request.setNewVariable ("myvar", ValueType.XS_STRING, "Some string value");

// "$myvar as xs:string" will be defined at query run time
ResultSequence rs = session.submitRequest(request);