MarkLogic 앱 개발 자습서: XML에서 가져온 내용을 데이터베이스에 씁니다.
간단한 튜토리얼 에서 한 걸음 나아가 로컬에서 읽은 XML을 MarkLogic 데이터베이스에 업로드하는 샘플을 만들어 보겠습니다. 이번에는 고정 URL이 아닌 URL을 매번 생성하기로 결정합니다.
다음 단계를 이미 완료했다고 가정합니다.
준비
XML 파일을
test.xml
라는 이름으로 만들고 프로젝트의 루트 폴더에 넣습니다. 일본어 대응을 확인하기 위해 굳이 Shift-JIS로 저장해 보겠습니다.test.xml
<?xml version="1.0" encoding="Shift-JIS"?>
<deadbeats>
<row>
<name>あああ</name>
<creditrating>いいい</creditrating>
</row>
</deadbeats>
UTF-8로 만들려면 첫 번째 줄의 Shift-JIS를 UTF-8로 변경하십시오.
수업 만들기
WriteXMLDataFromFile.java
public static void main(String[] args) {
// データベースクライアントの取得
DatabaseClient client = DatabaseClientFactory.newClient(
"localhost", 8000, "aaa", "pass", DatabaseClientFactory.Authentication.DIGEST
);
// DocumentManagerの取得
XMLDocumentManager xmlMgr = client.newXMLDocumentManager();
// URIテンプレートの作成
DocumentUriTemplate uriTemplate = xmlMgr.newDocumentUriTemplate("xml");
// 新規作成したファイルは、常に/my/docs/で始まる
uriTemplate.setDirectory("/my/docs/");
try {
// 入力ストリームの取得
InputSource source = new InputSource("test.xml");
// Handleの取得
InputSourceHandle handle = new InputSourceHandle(source);
// 生成されたURLに内容を書き込む
DocumentDescriptor documentDescriptor = xmlMgr.create(uriTemplate, handle);
// 生成されたURIをコンソールに出力
System.out.println("Created: " + documentDescriptor.getUri());
} catch (Exception e) {
// エラーが発生したら中断
throw new RuntimeException(e);
} finally {
// データベースクライアントの解放
client.release();
}
}
TextDocumentManager
대신 XMLDocumentManager
를 사용합니다. StringHandle
대신 InputSourceHandle
를 사용합니다. DocumentUriTemplate
의 객체를 만들고 있습니다. XMLDocumentManager
의 create()
에 상기의 오브젝트를 건네주고 있습니다. write()
아닙니다. MarkLogic에서 문자 코드 처리
MarkLogic은 내부적으로 UTF-8에서 텍스트, XML 및 JSON을 처리합니다. MarkLogic의 Java API 내부에서는 UTF-16 (Java 내부에서 처리되는 문자 코드)에서 UTF-8로 변환됩니다. XML 선언으로 제대로 문자 코드를 쓰고 있으면,
InputSourceHandle
자세한 내용은 공식 문서의 Conversion of Document Encoding을 참조하십시오.
htp // // cs. 마크 ぉぎ c. 코 m / 구이데 / 그럼 / Dokumen t 오페라 치온 s # i d_11208
실행
빌드하고 실행합니다.
22:29:43.030 [main] DEBUG c.m.client.DatabaseClientFactory - Creating new database client for server at localhost:8000
22:29:43.051 [main] DEBUG c.m.client.impl.JerseyServices - Connecting to localhost at 8000 as aaa
22:29:43.349 [main] INFO c.m.client.impl.DocumentManagerImpl - Creating content
22:29:43.350 [main] DEBUG c.m.client.impl.JerseyServices - Sending new document in transaction null
Created: /my/docs/3193325293466088864.xml
22:29:43.550 [main] INFO c.m.client.impl.DatabaseClientImpl - Releasing connection
22:29:43.550 [main] DEBUG c.m.client.impl.JerseyServices - Releasing connection
여러 번 실행한 후 쿼리 콘솔에서 확인합니다.
XMLEventReaderHandle
다음에 매번 다른 이름으로 XML이 생성됩니다.링크를 클릭하고 콘텐츠를 열면 XML 선언이 UTF-8이며 이전에 업로드한 문서가 깨지지 않게 표시됩니다.
Reference
이 문제에 관하여(MarkLogic 앱 개발 자습서: XML에서 가져온 내용을 데이터베이스에 씁니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/makopo/items/088cd4253d11563d7b0f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)