Symfoware

Symfowareについての考察blog

XMLデータベース eXistにJavaからデータを登録する

eXistへのデータ登録は、ファイルを読み込んで行うこともできますが、
今回はXmlDocumentオブジェクトを生成し、登録を実行してみます。

登録するデータ



こんな形式のデータを登録します。


<doc>
    <id>0000000001</id>
    <title>タイトル</title>
    <category>小説</category>
    <pub_date>2006年08月</pub_date>
</doc>



まず、org.w3c.dom.Documentオブジェクトでデータを生成。
その後、eXistに登録可能なオブジェクトに変換して登録を実行します。



データ登録のサンプルプログラム



こんな感じ。


import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xmldb.api.DatabaseManager;
import org.xmldb.api.base.Collection;
import org.xmldb.api.base.Database;
import org.xmldb.api.modules.XMLResource;

public class Sample {
    public static void main(String[] args) {
        try {
            Class clazz = Class.forName("org.exist.xmldb.DatabaseImpl");
            Database database = (Database) clazz.newInstance();
            DatabaseManager.registerDatabase(database);

            Collection col = DatabaseManager.getCollection(
                    "xmldb:exist://192.168.1.251:8080/exist/xmlrpc/db/book",
                    "admin", "");

            DocumentBuilderFactory dbfactory = DocumentBuilderFactory
                    .newInstance();
            // ドキュメントビルダーを生成
            DocumentBuilder builder = dbfactory.newDocumentBuilder();
            // パースを実行してDocumentオブジェクトを取得
            Document xml = builder.newDocument();

            Element doc = xml.createElement("doc");

            // idノードをdoc配下に追加
            Element id = xml.createElement("id");
            id.appendChild(xml.createTextNode("0000000001"));
            doc.appendChild(id);

            // titleノードをdoc配下に追加
            Element title = xml.createElement("title");
            title.appendChild(xml.createTextNode("タイトル"));
            doc.appendChild(title);

            // categoryノードをdoc配下に追加
            Element category = xml.createElement("category");
            category.appendChild(xml.createTextNode("小説"));
            doc.appendChild(category);

            // pub_dateノードをdoc配下に追加
            Element pub_date = xml.createElement("pub_date");
            pub_date.appendChild(xml.createTextNode("2006年08月"));
            doc.appendChild(pub_date);

            xml.appendChild(doc);
            

            // 第一引数の名称で登録される。※拡張子は.xml必須
            // 省略した場合は、ランダムな値が割り当てられる
            XMLResource dbxml = (XMLResource) col.createResource(
                    "0000000001.xml", "XMLResource");

            dbxml.setContentAsDOM(xml);

            col.storeResource(dbxml);

            col.close();

            System.out.println("登録成功");

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}




実行後、管理ツールで確認するとデータが登録されています。

001_20090927203337.png

ダブルクリックして内容を参照すると、ちゃんと登録できてました。

002_20090927203337.png


【参考URL】
DOM: XMLデータを作成する(5) テキストノードを追加
http://www6.airnet.ne.jp/manyo/xml/dom_java/step25.html




関連記事

テーマ:データベース - ジャンル:コンピュータ

  1. 2009/11/02(月) 12:32:12|
  2. eXist
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<XMLデータベース eXistのデータをJavaで検索する | ホーム | XMLデータベース eXistにJavaから接続する>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/201-c316227f
この記事にトラックバックする(FC2ブログユーザー)