XMLDB.jp

XMLDB開発支援
HOME  >  XMLDB開発支援  >  チュートリアル ~JAVA編(4):複数の文書の操作~

チュートリアル ~JAVA編(4):複数の文書の操作~

2004年6月3日 更新


チュートリアルのコンパイルと実行

ステップ 1

以下を確認したら、次のステップに進んでください。

すでにtutrial1を実行済みで、環境が正しくセットアップされており、サーバーアドレスとログイン情報の変更方法を理解している。


ステップ 2

以下の内容をカットアンドペーストして、cds.xmlというファイルとして現行ディレクトリーに保存します。


コード

  <CD>
    <TITLE>Empire Burlesque</TITLE>
    <ARTIST>Bob Dylan</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Columbia</COMPANY>
    <PRICE>10.90</PRICE>
    <YEAR>1985</YEAR>
  </CD>
  <CD>
    <TITLE>Hide your heart</TITLE>
    <ARTIST>Bonnie Tylor</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>CBS Records</COMPANY>
    <PRICE>9.90</PRICE>
    <YEAR>1988</YEAR>
  </CD>
  <CD>
    <TITLE>Greatest Hits</TITLE>
    <ARTIST>Dolly Parton</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>RCA</COMPANY>
    <PRICE>9.90</PRICE>
    <YEAR>1982</YEAR>
  </CD>
  <CD>
    <TITLE>Still got the blues</TITLE>
    <ARTIST>Gary More</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>Virgin redords</COMPANY>
    <PRICE>10.20</PRICE>
    <YEAR>1990</YEAR>
  </CD>
  <CD>
    <TITLE>Eros</TITLE>
    <ARTIST>Eros Ramazzotti</ARTIST>
    <COUNTRY>EU</COUNTRY>
    <COMPANY>BMG</COMPANY>
    <PRICE>9.90</PRICE>
    <YEAR>1997</YEAR>
  </CD>
  <CD>
    <TITLE>One night only</TITLE>
    <ARTIST>Bee Gees</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>Polydor</COMPANY>
    <PRICE>10.90</PRICE>
    <YEAR>1998</YEAR>
  </CD>
  <CD>
    <TITLE>Sylvias Mother</TITLE>
    <ARTIST>Dr.Hook</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>CBS</COMPANY>
    <PRICE>8.10</PRICE>
    <YEAR>1973</YEAR>
  </CD>
  <CD>
    <TITLE>Maggie May</TITLE>
    <ARTIST>Rod Stewart</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>Pickwick</COMPANY>
    <PRICE>8.50</PRICE>
    <YEAR>1990</YEAR>
  </CD>
  <CD>
    <TITLE>Romanza</TITLE>
    <ARTIST>Andrea Bocelli</ARTIST>
    <COUNTRY>EU</COUNTRY>
    <COMPANY>Polydor</COMPANY>
    <PRICE>10.80</PRICE>
    <YEAR>1996</YEAR>
  </CD>
  <CD>
    <TITLE>When a man loves a woman</TITLE>
    <ARTIST>Percy Sledge</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Atlantic</COMPANY>
    <PRICE>8.70</PRICE>
    <YEAR>1987</YEAR>
  </CD>
  <CD>
    <TITLE>Black angel</TITLE>
    <ARTIST>Savage Rose</ARTIST>
    <COUNTRY>EU</COUNTRY>
    <COMPANY>Mega</COMPANY>
    <PRICE>10.90</PRICE>
    <YEAR>1995</YEAR>
  </CD>
  <CD>
    <TITLE>1999 Grammy Nominees</TITLE>
    <ARTIST>Many</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Grammy</COMPANY>
    <PRICE>10.20</PRICE>
    <YEAR>1999</YEAR>
  </CD>
  <CD>
    <TITLE>For the good times</TITLE>
    <ARTIST>Kenny Rogers</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>Mucik Master</COMPANY>
    <PRICE>8.70</PRICE>
    <YEAR>1995</YEAR>
  </CD>
  <CD>
    <TITLE>Big Willie style</TITLE>
    <ARTIST>Will Smith</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Columbia</COMPANY>
    <PRICE>9.90</PRICE>
    <YEAR>1997</YEAR>
  </CD>
  <CD>
    <TITLE>Tupelo Honey</TITLE>
    <ARTIST>Van Morrison</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>Polydor</COMPANY>
    <PRICE>8.20</PRICE>
    <YEAR>1971</YEAR>
  </CD>
  <CD>
    <TITLE>Soulsville</TITLE>
    <ARTIST>Jorn Hoel</ARTIST>
    <COUNTRY>Norway</COUNTRY>
    <COMPANY>WEA</COMPANY>
    <PRICE>7.90</PRICE>
    <YEAR>1996</YEAR>
  </CD>
  <CD>
    <TITLE>The very best of</TITLE>
    <ARTIST>Cat Stevens</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>Island</COMPANY>
    <PRICE>8.90</PRICE>
    <YEAR>1990</YEAR>
  </CD>
  <CD>
    <TITLE>Stop</TITLE>
    <ARTIST>Sam Brown</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>A and M</COMPANY>
    <PRICE>8.90</PRICE>
    <YEAR>1988</YEAR>
  </CD>
  <CD>
    <TITLE>Bridge of Spies</TITLE>
    <ARTIST>T`Pau</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>Siren</COMPANY>
    <PRICE>7.90</PRICE>
    <YEAR>1987</YEAR>
  </CD>
  <CD>
    <TITLE>Private Dancer</TITLE>
    <ARTIST>Tina Turner</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>Capitol</COMPANY>
    <PRICE>8.90</PRICE>
    <YEAR>1983</YEAR>
  </CD>
  <CD>
    <TITLE>Midt om natten</TITLE>
    <ARTIST>Kim Larsen</ARTIST>
    <COUNTRY>EU</COUNTRY>
    <COMPANY>Medley</COMPANY>
    <PRICE>7.80</PRICE>
    <YEAR>1983</YEAR>
  </CD>
  <CD>
    <TITLE>Pavarotti Gala Concert</TITLE>
    <ARTIST>Luciano Pavarotti</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>DECCA</COMPANY>
    <PRICE>9.90</PRICE>
    <YEAR>1991</YEAR>
  </CD>
  <CD>
    <TITLE>The dock of the bay</TITLE>
    <ARTIST>Otis Redding</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Atlantic</COMPANY>
    <PRICE>7.90</PRICE>
    <YEAR>1987</YEAR>
  </CD>
  <CD>
    <TITLE>Picture book</TITLE>
    <ARTIST>Simply Red</ARTIST>
    <COUNTRY>EU</COUNTRY>
    <COMPANY>Elektra</COMPANY>
    <PRICE>7.20</PRICE>
    <YEAR>1985</YEAR>
  </CD>
  <CD>
    <TITLE>Red</TITLE>
    <ARTIST>The Communards</ARTIST>
    <COUNTRY>UK</COUNTRY>
    <COMPANY>London</COMPANY>
    <PRICE>7.80</PRICE>
    <YEAR>1987</YEAR>
  </CD>
  <CD>
    <TITLE>Unchain my heart</TITLE>
    <ARTIST>Joe Cocker</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>EMI</COMPANY>
    <PRICE>8.20</PRICE>
    <YEAR>1987</YEAR>
  </CD>

ステップ 3

 a) メモ帳その他のテキストエディタ、またはIDEで、tutorial4.javaを開きます。


 b) サーバー情報とログイン情報を必要に応じて変更します。


 c) tutorial4をコンパイルして実行します。


 d) 正常に実行されると、次のように表示されます。


コード
      <Query-Results>
              <CD>
                      <TITLE>For the good times</TITLE>
                      <ARTIST>Kenny Rogers</ARTIST>
                      <COUNTRY>UK</COUNTRY>
                      <COMPANY>Mucik Master</COMPANY>
                      <PRICE>8.70</PRICE>
                      <YEAR>1995</YEAR>
              </CD>
         ...
              <CD>
                      <TITLE>Red</TITLE>
                      <ARTIST>The Communards</ARTIST>
                      <COUNTRY>UK</COUNTRY>
                      <COMPANY>London</COMPANY>
                      <PRICE>7.80</PRICE>
                      <YEAR>1987</YEAR>
              </CD>
      </Query-Results>]

      Modify results: [<?xml version="1.0" encoding="UTF-8" ?>
      <Modify-Results>
              <Modified-Nodes>7</Modified-Nodes>
              <Matching-Nodes>0</Matching-Nodes>
      </Modify-Results>]

      Current documents: [<?xml version="1.0" encoding="UTF-8" ?>
      <Query-Results>
              <CD>
                      <TITLE>For the good times</TITLE>
                      <ARTIST>Kenny Rogers</ARTIST>
                      <COUNTRY>UK</COUNTRY>
                      <COMPANY>Mucik Master</COMPANY>
                      <PRICE>8.70</PRICE>
                      <YEAR>1995</YEAR>
              </CD>
         ...
              <CD>
                      <TITLE>Red</TITLE>
                      <ARTIST>The Communards</ARTIST>
                      <COUNTRY>UK</COUNTRY>
                      <COMPANY>London</COMPANY>
                      <PRICE>7.80</PRICE>
                      <YEAR>1987</YEAR>
              </CD>
      </Query-Results>]

コードの詳細説明(相違点)

第47行: s = neosession.storeFileXML("cds.xml", null, null);


ここでは、ストリングではなく、初めてファイルから格納します。もう1つ特徴があります。 cds.xmlをテキストエディタで開くと(なお、XMLエディタでは正常に開けません)、最上位タグが存在しないことにお気づきでしょう。これが、いわゆる「複数文書」格納です。すべての音楽CDの内容を1つの文書に格納することも可能ですが、そうする代わりに、それぞれのCDを個別の文書に格納します。こうすれば、各文書をよりよく管理できます(MetaDataを追加しますが、これについてはあとで説明します)。こうして、大規模な、ユーザー数の多いデプロイメントではトランザクションの効率が向上します。データへのアクセスは、どちらの場合もほぼ同じです。


第56行: s = neosession.modifyXML("/ND/CD/COUNTRY[.=\"USA\"]", "<COUNTRY>United States</COUNTRY>");


ここでは、<COUNTRY>(国)エレメントを変更します。現在は「USA」ですが、これを「United States」に変更します。これは7つの文書の7つのエレメントに該当し、2番目のクエリー結果に示されるように、そのすべてが一度に変更されます。これと同様にして、新しい構造を簡単に挿入または削除できます。その際、他の文書はまったく変更されません。文書がクエリーに適合する限り、これとは多少、または大きく異なる構造の文書に対して、クエリーを実行して操作を行うことができます。詳細については、あとで説明します。



--- チュートリアル(4)の終わり --- 以下はソースコードです ---


コード

//Title:        tutorial4 using NeoCore XMS
//Version:      1.0
//Date:         4/15/04
//Copyright:    Copyright (c) 2004
//Author:       Kevin Huck
//Company:      Xpriori
//Description:  Demonstrates modifying element across multiple documents

/**
This is a very simple Java application that demonstrates modifying element data
in more than one document with a single command.
*/

import com.neocore.httpclient.*;

public class tutorial4 {

   // change the below "server" variable to the machine name or IP if not running XMS on this machine
   public static String server = "localhost";
   public static SessionManagedNeoConnection neosession;
   public static String sid = null;

   public static void main(String[] args)
   {
      //--------------------- get connection and login ---------------------
      try{
         neosession = new  SessionManagedNeoConnection(server, 7700);   // neosession will manage session id for us
      }catch(Exception e){
         System.out.println("Cannot connect to NeoCore server:" + e);
         return;
      }
      try{
         // change the below password to what you entered during the installation
         sid = neosession.login("Administrator", "password");
      }catch(Exception e){
         System.out.println("Cannot login to NeoCore server:" + e);
         return;
      }

      try
      {
         //---------------- first, delete any tutorial4 documents -----------------
         String s = neosession.deleteXML("/ND[CD]");

         //---------------------- store from a file this time ---------------------
         System.out.println("Storing documents");
         s = neosession.storeFileXML("cds.xml", null, null);      // make sure the path is correct
         System.out.println("Store results: [" + s + "]");

         //------------------- now query the sample documents ---------------------
         s = neosession.queryXML("/ND/CD");
         System.out.println("Current documents: [" + s + "]");

         //-------------- now modify country "USA" to "United States" -------------
         s = neosession.modifyXML("/ND/CD/COUNTRY[.=\"USA\"]", "<COUNTRY>United States</COUNTRY>");
         System.out.println("Modify results: [" + s + "]");

         //------------------- now query the sample documents ---------------------
         s = neosession.queryXML("/ND/CD");
         System.out.println("Current documents: [" + s + "]");

         //------------------------------- logout ---------------------------------
         neosession.logout();
      }
      catch(Exception e)
      {
         System.out.println("NeoCore error: " + e);
      }
   }
}
// END OF FILE - tutorial4.java

▲このページのTOPへ

  • 無償で使える!XMLDB「NeoCore」
  • サイバーテック求人情報
  • メールマガジン申し込み
  • TEchScore

  • ▲NeoCoreについて記載されています!

  • ▲XMLマスター教則本です。試験対策はこれでばっちり!
Copyright (c) CyberTech corporation ltd. All ights Reserved. | サイバーテックについて | ご利用ガイド