2013-07-04 63 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

相關問題