MarkLogic结构查询搜索

时间:2017-05-26 11:54:58

标签: marklogic marklogic-8

我的xml以下。

<prop:properties xmlns:prop="http://marklogic.com/xdmp/property">
  <cpf:processing-status xmlns:cpf="http://marklogic.com/cpf">done</cpf:processing-status>
  <cpf:property-hash xmlns:cpf="http://marklogic.com/cpf">6b9dab35ed148cd08bba59503892a0fd</cpf:property-hash>
  <cpf:last-updated xmlns:cpf="http://marklogic.com/cpf">2017-05-23T17:56:54.5734822+05:30</cpf:last-updated>
  <cpf:state xmlns:cpf="http://marklogic.com/cpf">http://marklogic.com/states/converted</cpf:state>
  <lnk:link from="/mycompany/mlabcNew_doc.xhtml" to="/mycompany/mlabcNew.doc" rel="source" rev="conversion" strength="strong" xmlns:lnk="http://marklogic.com/cpf/links"/>
  <cpf:self xmlns:cpf="http://marklogic.com/cpf">/mycompany/mlabcNew.doc</cpf:self>
</prop:properties>

我希望将&#39;的属性值设为&#39; (即/mycompany/mlabcNew.doc)使用java客户端API。

我尝试过以下结构化查询来获取结果但没有得到结果

StructuredQueryBuilder qb = queryMgr.newStructuredQueryBuilder();

    StructuredQueryDefinition query = qb.properties(
                qb.word(qb.elementAttribute(
                            qb.element(new QName("http://marklogic.com/cpf/links", "link")), 
                            qb.attribute(new QName("http://marklogic.com/cpf/links", "to"))), 
                        "/mycompany/mlabcNew_doc.xhtml"));

我没有找到解决方法。请帮忙

1 个答案:

答案 0 :(得分:1)

名为&#39;到&#39;的属性的名称空间。根据您的样本,不是cpf / links命名空间。

尝试:

StructuredQueryBuilder qb = queryMgr.newStructuredQueryBuilder();

    StructuredQueryDefinition query = qb.properties(
                qb.word(qb.elementAttribute(
                            qb.element(new QName("http://marklogic.com/cpf/links", "link")), 
                            qb.attribute(new QName("", "to"))), 
                        "/mycompany/mlabcNew_doc.xhtml"));

注意:在对此类事情进行故障排除时,我通常会使用xPath在Query Console中确认元素和属性名称以及命名空间。这样可以删除多个图层,并在某些情况下使故障排除更加简单。