1

現在、Java API を使用して MarkLogic サーバーからデータ (XML) を取得しようとしています。

したがって、名前空間を追加しました:

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 結果を取得することは可能ですか、それとも次のような 2 番目のクエリをコミットする必要がありますか?

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

2 に答える 2

1

スニペットではなくドキュメント全体を取得するには、クエリ オプションで生の変換結果を指定します。

<transform-results apply="raw" />

参照してください:

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

ドキュメントが XML の場合は、SearchHandle の代わりに、DOMHandle、SAXHandle、XMLStreamReaderHandle (または JDOMHandle または XOMHandle の例で示されている手法) などの組み込みの XML 解析ハンドルを使用して、応答ペイロードからドキュメントを抽出することをお勧めします。

ドキュメントが JSON の場合は、JacksonHandle の例で示されている手法を使用することをお勧めします。

于 2013-07-04T18:28:15.410 に答える
1

必要な結果と一致する結果ハンドルを使用する必要があります。http://developer.marklogic.com/learn/java/processing-search-resultsおよびhttp://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);
于 2013-07-04T15:32:27.010 に答える