You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过MarkLogic Java API实现匹配特定URI模式的XML文件查询?

使用MarkLogic Java API匹配特定URI模式的XML文件

要实现等效于cts:document-query(cts:uri-match("/directory/*/folder/*.xml"))的功能,可通过MarkLogic Java API的结构化查询能力完成,核心是利用UriMatchQuery匹配通配符URI,再包装为文档查询获取目标文件。

核心代码实现

import com.marklogic.client.DatabaseClient;
import com.marklogic.client.DatabaseClientFactory;
import com.marklogic.client.document.XMLDocumentManager;
import com.marklogic.client.query.QueryManager;
import com.marklogic.client.query.StructuredQueryBuilder;
import com.marklogic.client.query.StructuredQueryDefinition;
import com.marklogic.client.query.SearchHandle;

public class UriMatchXmlFinder {
    public static void main(String[] args) {
        // 初始化数据库客户端(根据实际环境调整地址、端口、认证信息)
        DatabaseClient client = DatabaseClientFactory.newClient(
            "localhost", 8000,
            DatabaseClientFactory.DigestAuthContext.newAuthContext("your-username", "your-password")
        );

        try {
            // 创建XML文档管理器和查询管理器实例
            XMLDocumentManager xmlDocMgr = client.newXMLDocumentManager();
            QueryManager queryMgr = client.newQueryManager();
            StructuredQueryBuilder queryBuilder = new StructuredQueryBuilder();

            // 构建URI匹配规则,对应XQuery中的cts:uri-match
            UriMatchQuery uriMatchQuery = queryBuilder.uriMatch("/directory/*/folder/*.xml");
            // 包装为文档查询,对应XQuery中的cts:document-query
            StructuredQueryDefinition docQuery = queryBuilder.document(uriMatchQuery);

            // 执行查询并获取结果
            SearchHandle resultsHandle = queryMgr.search(docQuery, new SearchHandle());
            String[] matchingUris = resultsHandle.getMatchResults();

            // 遍历输出匹配的文档URI,如需获取内容可调用xmlDocMgr.read(uri)
            for (String uri : matchingUris) {
                System.out.println("匹配的XML文档URI:" + uri);
            }
        } finally {
            // 务必关闭客户端连接释放资源
            client.release();
        }
    }
}

关键代码说明

  • queryBuilder.uriMatch("/directory/*/folder/*.xml"):实现与cts:uri-match完全等效的通配符匹配,*可匹配任意长度的字符序列。
  • queryBuilder.document(uriMatchQuery):将URI匹配查询包装为文档查询,确保仅返回数据库中实际存在的文档,对应cts:document-query的作用。
  • SearchHandle:用于接收查询结果,通过getMatchResults()可直接提取所有匹配的文档URI列表;若需读取文档内容,可使用XMLDocumentManager的read()方法。

内容的提问来源于stack exchange,提问作者Aspir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 00:15:15