MarkLogic 앱 개발 자습서: XML에서 가져온 내용을 데이터베이스에 씁니다.

8077 단어 MarkLogicnosql
NoSQL 제품인 MarkLogic의 튜토리얼 제2회입니다.

간단한 튜토리얼 에서 한 걸음 나아가 로컬에서 읽은 XML을 MarkLogic 데이터베이스에 업로드하는 샘플을 만들어 보겠습니다. 이번에는 고정 URL이 아닌 URL을 매번 생성하기로 결정합니다.

다음 단계를 이미 완료했다고 가정합니다.
  • MarkLogic 사용자 만들기
  • Java 프로젝트 작성
  • Java API 라이브러리 다운로드

  • 준비



    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 를 사용합니다.
  • URI의 자동 생성을 위해서 DocumentUriTemplate 의 객체를 만들고 있습니다.
  • XMLDocumentManagercreate() 에 상기의 오브젝트를 건네주고 있습니다. 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이며 이전에 업로드한 문서가 깨지지 않게 표시됩니다.

    좋은 웹페이지 즐겨찾기