Java 替换MarkLogic中不推荐使用的KeyValueQueryDefinition以通过示例使用查询

Java 替换MarkLogic中不推荐使用的KeyValueQueryDefinition以通过示例使用查询,java,marklogic,query-by-example,marklogic-9,Java,Marklogic,Query By Example,Marklogic 9,我有一个保存在MarkLogic中的文档,如下所示: <?xml version="1.0" encoding="UTF-8"?> <user> <userName>Vikram</userName> <password>password</password> <firstName>Vikram</firstName> <lastName>Swaminathan</

我有一个保存在MarkLogic中的文档,如下所示:

<?xml  version="1.0" encoding="UTF-8"?>
<user>
  <userName>Vikram</userName>
  <password>password</password>
  <firstName>Vikram</firstName>
  <lastName>Swaminathan</lastName>
  <emailAddress>vikram@gmail.com</emailAddress>
</user>
我得到的结果是:

Matched 1 locations in user/vikram:
[vikram@gmail.com]
我从下面的链接获得帮助,使其与新的Marklogic 9版本配合使用,因为最新版本中不推荐使用
KeyValueQueryDefinition

此处是否有更改KeyValueQueryDefinition代码的变体

 KeyValueQueryDefinition query = queryMgr.newKeyValueDefinition();
        query.put(queryMgr.newElementLocator(new QName("emailAddress")),"vikram@gmail.com");
要使用QBE搜索以下链接中提到的文档:


关于如何处理这个问题的任何建议我可能不理解这个问题。难道你不简单地按照书中的说明去做吗

String-rawXMLQuery=
""+
"" +
"vikram@gmail.com" +
"" +
"";
StringHandle rawHandle=
新的StringHandle(rawXMLQuery).withFormat(Format.XML);
RawQueryByExampleDefinition查询=
queryMgr.newRawQueryByExampleDefinition(rawHandle);
 KeyValueQueryDefinition query = queryMgr.newKeyValueDefinition();
        query.put(queryMgr.newElementLocator(new QName("emailAddress")),"vikram@gmail.com");
String rawXMLQuery =
  "<q:qbe xmlns:q='http://marklogic.com/appservices/querybyexample'>"+
    "<q:query>" +
      "<emailAddress>vikram@gmail.com</emailAddress>" +
    "</q:query>" +
  "</q:qbe>";
StringHandle rawHandle = 
    new StringHandle(rawXMLQuery).withFormat(Format.XML);
RawQueryByExampleDefinition query =
    queryMgr.newRawQueryByExampleDefinition(rawHandle);