2013-07-04 66 views
0

目前我正试图从我的MarkLogic服务器获取数据(XML)和Java API。MarkLogic Java API - 如何获取文档

所以我加了命名空间:

NamespacesManager nsManager = client.newServerConfigManager() 
    .newNamespacesManager(); 
nsManager.addPrefix("document", 
    "http://test/dummy/master/doc"); 
... 

之后,我尝试以下操作:

DatabaseClient client = DatabaseClientFactory.newClient("IP_ADDRESS", 
    PORT, user, password, Authentication.DIGEST); 

SearchHandle handle = new SearchHandle(); 
QueryManager queryMgr = client.newQueryManager(); 

KeyValueQueryDefinition query = queryMgr.newKeyValueDefinition(); 
query.put(
    queryMgr.newElementLocator(new QName("doc:id")), 
    "1439-1074"); 
SearchHandle resultsHandle = queryMgr.search(query, handle); 
System.out.println("results: " + resultsHandle.getTotalResults()); 

// System.out.println("Matched "+resultsHandle.getTotalResults()+ 
// " documents with '"+query.getCriteria()+"'\n"); 

// iterate over the result documents 
MatchDocumentSummary[] docSummaries = resultsHandle.getMatchResults(); 
System.out.println("Listing "+docSummaries.length+" documents:\n"); 

所有的作品;我正在获取结果,但它们不包含XML文档(只是文档的URI)。是否有可能得到与此查询XML结果还是我犯像第二个查询:

JSONDocumentManager docMgr = client.newJSONDocumentManager(); 
StringHandle doc = docMgr.read(uri, new StringHandle()); 

回答

0

你必须使用你想要的结果相匹配成果的手柄。看看http://developer.marklogic.com/learn/java/processing-search-resultshttp://docs.marklogic.com/javadoc/client/index.html?com/marklogic/client/io/SearchHandle.html

而不是使用SearchHandle,使用StringHandle。下面是文档例如:

// create a handle for the search results to be received as raw XML 
StringHandle resultsHandle = new StringHandle(); 
// run the search 
queryMgr.search(query, resultsHandle); 
// dump the XML results to the console 
System.out.println(resultsHandle); 
+0

感谢您的回应,但只是更改结果句柄不解决我的问题。结果是一样的(数据只包含uris)。 – user1731299

0

找回整个文档,而不是一个片断中,指定您的查询选项 原料转化的结果:

<transform-results apply="raw" /> 

请参阅:

http://docs.marklogic.com/guide/search-dev/search-api#id_58295 

如果文档是XML文档,则可能需要使用内置的XML解析句柄,如 DOMHandle,SAXHandle或XMLStreamReaderHandle(或技术问题由 JDOMHandle或XOMHandle示例显示)而不是SearchHandle,并从响应有效内容中提取文档 。

如果这些文档是JSON,那么您可能需要使用以下示例中的技术:JacksonHandle示例中的 。

+0

如何添加?我尝试以下:String options =“”; StringHandle handle = new StringHandle(options);但结果没有改变。 – user1731299

+0

String options =““; //也不会改变结果。 – user1731299

相关问题