2017-05-26 174 views
0

我有下面的XML。MarkLogic结构查询搜索

<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> 

我想属性'到' 的值(即/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

根据您的示例,名为'to'的属性的命名空间不是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属性的名称和命名空间在查询控制台。这在一些情况下移除许多图层并且使故障排除更加简单。