作成したサンプルデータにjavaからアクセスしてみます。
プログラムの実行には、
・eXistインストールフォルダ直下のexist.jar
・/lib/coreにある、xmldb.jar、xmlrpc-1.2-patched.jar、log4j-1.2.14.jarが必要です。
testコレクションへ接続し、sample.xmlドキュメントを取り出してみます。
try {
Class clazz = Class.forName("org.exist.xmldb.DatabaseImpl");
Database database = (Database) clazz.newInstance();
DatabaseManager.registerDatabase(database);
Collection col = DatabaseManager.getCollection(
"xmldb:exist://localhost:5555/exist/xmlrpc/db/test","admin","");
XMLResource res = (XMLResource)col.getResource("sample.xml");
System.out.println(res.getContent());
} catch (Exception e){
e.printStackTrace();
}
実行結果
<root>
<data>
<ken id="1">
<name>北海道</name>
<comment>出張で行ったことあります。</comment>
</ken>
<ken id="2">
<name>青森</name>
<comment>まだ、行ったことありません。</comment>
</ken>
<ken id="3">
<name>秋田</name>
<comment>上司の奥さんの出身地です。</comment>
</ken>
<ken id="4">
<name>岩手</name>
<comment>まだ、行ったことありません。</comment>
</ken>
<ken id="5">
<name>山形</name>
<comment>学生時代に行ったことがあります。</comment>
</ken>
</data>
</root>
今度はXPathで検索してみます。
try {
Class clazz = Class.forName("org.exist.xmldb.DatabaseImpl");
Database database = (Database) clazz.newInstance();
DatabaseManager.registerDatabase(database);
Collection col = DatabaseManager.getCollection(
"xmldb:exist://localhost:5555/exist/xmlrpc/db/test","admin", "");
XPathQueryService service = (XPathQueryService) col.getService(
"XPathQueryService", "1.0");
ResourceSet result = service.query("/root/data/ken[@id='3']");
ResourceIterator i = result.getIterator();
while (i.hasMoreResources()) {
Resource r = i.nextResource();
System.out.println((String) r.getContent());
}
} catch (Exception e) {
e.printStackTrace();
}
実行結果
<ken id="3">
<name>秋田</name>
<comment>上司の奥さんの出身地です。</comment>
</ken>
XUpdateでデータを更新してみます。
try {
Class clazz = Class.forName("org.exist.xmldb.DatabaseImpl");
Database database = (Database) clazz.newInstance();
DatabaseManager.registerDatabase(database);
Collection col = DatabaseManager.getCollection(
"xmldb:exist://localhost:5555/exist/xmlrpc/db/test","admin", "");
XUpdateQueryService service =
(XUpdateQueryService) col.getService("XUpdateQueryService", "1.0");
StringBuffer xupdate = new StringBuffer();
xupdate.append("<modifications version=\"1.0\" xmlns=\"http://www.xmldb.org/xupdate\">");
xupdate.append(" <update select=\"/root/data/ken[@id='4']/comment\">今年、行く予定です。");
xupdate.append("</update>");
xupdate.append("</modifications>");
service.update(xupdate.toString());
col.close();
} catch (Exception e) {
e.printStackTrace();
}
実行結果
<root>
<data>
<ken id="1">
<name>北海道</name>
<comment>出張で行ったことあります。</comment>
</ken>
<ken id="2">
<name>青森</name>
<comment>まだ、行ったことありません。</comment>
</ken>
<ken id="3">
<name>秋田</name>
<comment>上司の奥さんの出身地です。</comment>
</ken>
<ken id="4">
<name>岩手</name>
<comment>今年、行く予定です。</comment>
</ken>
<ken id="5">
<name>山形</name>
<comment>学生時代に行ったことがあります。</comment>
</ken>
</data>
</root>