我在Marklogic中存储了一个XML,如下所述
<employee>
<name>Shiv</name>
<address>.....</address>
<phone>......</phone>
<email>...</email>
</employee>
所以我的要求是,我想使用marklogic java api搜索<name>
标记及其值为Shiv
。
我尝试使用KeyValueQueryDefinition
并且工作正常但KeyValueQueryDefinition
现已弃用,因此我无法使用此功能。
QueryManager queryMgr = client.newQueryManager();
KeyValueQueryDefinition query = queryMgr.newKeyValueDefinition();
query.put(queryMgr.newElementLocator(new QName("name")), "Shiv");
SearchHandle resultsHandle = new SearchHandle();
queryMgr.search(query, resultsHandle);
所以我需要替代满足上述要求的KeyValueQueryDefinition
,我也不想为<name>
代码创建元素范围索引。
答案 0 :(得分:4)
值查询等同于KeyValueQueryDefinition。以下几行应该有效:
QueryManager queryMgr = client.newQueryManager();
StructuredQueryBuilder qryBldr = new StructuredQueryBuilder();
StructuredQueryDefinition query = qryBldr.value(qryBldr.element("name"), "Shiv");
SearchHandle resultsHandle = new SearchHandle();
queryMgr.search(query, resultsHandle);
请参阅:
希望有帮助,