作成したサンプルデータに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>