ホーム

サンプル

次のサンプルは、XMLドライバの使用を開始するときに役立ちます。

サンプル#1: Employee

ソースの場所: /demo/xml/samples/Employee.java

この簡単なJavaの例では、XMLファイルに接続し、XMLファイルのデータの読取りおよび更新を行う方法を示します。DTDファイル/demo/xml/employee.dtdによって記述されているファイル/demo/xml/employee.xmlを使用します。

XMLファイルへの接続およびデータの読取りと書込みに関する重要な手順について、次に詳しく説明します。

接続を開く

OracleDI Driver for XMLを通してXMLファイルに接続するには、最初にJavaプログラムで次の操作を実行する必要があります。

  1. ドライバを含むクラスをロードして登録します。
    ドライバのクラス名はcom.sunopsis.jdbc.driver.xml.SnpsXmlDriverです。

  2. 有効なURLを作成します。
    URLの書式はjdbc:snps:xml?Parametersです。

注意: ドライバ・パラメータの詳細は、「ドライバの構成」を参照してください。

  1. XMLファイルに対する接続を開きます。

次のサンプル・コードは、接続の開始方法を示しています。

// ドライバ・クラスをロードして登録します。

Class.forName("com.sunopsis.jdbc.driver.xml.SnpsXmlDriver");

// employee.xmlサンプル・ファイルを接続するためのURLを作成します。

String url = "jdbc:snps:xml?f=../xml/employee.xml";

// 特定のURLに対するJDBC接続を開きます。

Connection conn = DriverManager.getConnection(url);

スキーマにデータをロードする

OracleDI Driver for XMLを使用すると、リレーショナル構造としてのXMLデータをスキーマにロードできます。このスキーマは、メモリーまたはデータベースに格納できます。XMLデータを操作するには、先にスキーマにロードする必要があります。XMLデータをロードするには、LOAD文またはSYNCHRONIZE文を使用できます。

// SYNCHRONIZE操作を実行し、デフォルト・スキーマのXMLファイルをメモリーにロードします。

Statement s = conn.createStatement();

s.execute("SYNCHRONIZE FROM FILE");

注意: この文はXMLドライバ固有のコマンドですが、JDBC接続を介して標準SQL文として発行します。ドライバがサポートする特定のコマンドの詳細は、「ドライバ・コマンドの詳細」を参照してください。

注意: この例では、SYNCHRONIZE操作は厳密には必要ありません。接続時に、まだ存在していないスキーマは自動的にロードされます。

スキーマ内のデータを操作する

データをスキーマにロードすると、次のような標準のSQL問合せを実行して、データを選択、編集または更新できます。

// XMLタグの内容<person id ="xxx" salary="yyy">に対応するデータのスキーマを問い合せます。

ResultSet EmployeeList = s.executeQuery("SELECT id, salary FROM person");

while (EmployeeList.next())

{

System.out.println(EmployeeList.getString("id") + " has a salary of $" + EmployeeList.getString("salary"));

}

// スキーマに対して2つの更新操作を実行します。

// - salaryがNullの場合は、値0を設定します。

// - salaryを100増やします。

s.execute("UPDATE person SET salary = '0' WHERE salary IS NULL");

s.execute("UPDATE person SET salary = CAST(salary AS NUMERIC) + 100");

注意: これらの文では、ドライバの組込みエンジンのSQL機能を使用しています。ドライバのSQL機能の詳細は、「SQL構文」を参照してください。

データを同期化してXMLファイルに戻す

XMLファイルでの作業が終了したら、XML接続を閉じる必要があります。スキーマのデータを変更した場合は、接続を閉じる前に、SYNCHRONIZEコマンドを使用して変更をファイルにコミットする必要があります。

// スキーマとファイルのデータを同期化します。

s.execute("SYNCHRONIZE ALL");

接続を閉じる

最後に、XMLドライバに対するJDBC接続を閉じる必要があります。

// 接続を閉じます。

s.close();

conn.close();

サンプルの実行

サンプルを実行するには、次のようにします。
  1. OSシェルを開きます。

  2. OracleDI Driver for XMLのインストール・ディレクトリに移動し、次に/demo/xmlサブディレクトリに移動します。

  3. java -classpath ./samples/;../../drivers/snpsxmlo.jar;../../drivers/crimson.jar Employeeを実行します。

コンソールに次のような結果が表示されます。

 

* Registering Driver version

* Connecting to the employee.xml file

* Driver Version is 2.0b5

* Synchronizing the File with Schema

* Executing Query

 

Employee List

*************

Big.Boss has a salary of $3200

one.worker has a salary of $1000

two.worker has a salary of $1000

three.worker has a salary of $1000

four.worker has a salary of $1000

five.worker has a salary of $1350

 

* Increasing all wages by $100

* Synchronizing data back to file

* Closing Connection.You may now restart to see the changes.

 

サンプルを繰り返し実行すると、更新が適用され、実行のたびに給与が100ドルずつ増加することがわかります。

先頭に戻る

サンプル#2: XML Plus

ソースの場所: /demo/xml/samples/XmlPlus.java

この簡単なJavaの例は、いくつかの組込みコマンドを使用した、XMLファイル用の非常に基本的な問合せツールです。

サンプルの実行

サンプルを実行するには、次のようにします。
  1. OSシェルを開きます。

  2. OracleDI Driver for XMLのインストール・ディレクトリに移動し、次に/demo/xmlサブディレクトリに移動します。

  3. java -classpath ./samples/;../../drivers/snpsxmlo.jar;../../drivers/crimson.jar XmlPlus <url>を実行します。

<url>は、XMLドライバの有効なURLです。URLを指定しないと、接続は実行されません。組込みコマンドCONNECTを使用して接続できます。

組込みコマンドは次のとおりです。

コマンド・シーケンスの例(ユーザー・コマンドは青で示されています):

java -classpath ./samples/;../../drivers/snpsxmlo.jar;../../drivers/crimson.jar XmlPlus "jdbc:snps:xml?f=employee.xml"

Starting XML Plus

Connecting to URL: jdbc:snps:xml?f=employee.xml

Connected.

Type 'help' for the list of commands

> SELECT * FROM person

ID;CONTR;SALARY;EMPLOYEEFK;PERSONPK;PERSONORDER

Big.Boss;null;3700;0;0;0

one.worker;null;1500;0;1;1

two.worker;null;1500;0;2;2

three.worker;null;1500;0;3;3

four.worker;null;1500;0;4;4

five.worker;null;1850;0;5;5

> UPDATE person SET salary = CAST(salary AS NUMERIC) + 20

Done

> SELECT * FROM PERSON

ID;CONTR;SALARY;EMPLOYEEFK;PERSONPK;PERSONORDER

Big.Boss;null;3720;0;0;0

one.worker;null;1520;0;1;1

two.worker;null;1520;0;2;2

three.worker;null;1520;0;3;3

four.worker;null;1520;0;4;4

five.worker;null;1870;0;5;5

> SYNCHRONIZE

Done

> BYE

先頭に戻る