
Javaで実現するDOM/SAXプログラミング(3)
DOMプログラムの実例
| 設定ファイルの参照 |
では、実際に設定ファイルを読み込んで必要な情報を取り出すプログラムに挑戦してみます。
まずは前回のおさらいを兼ねて手順を確認しておきましょう。。ここではファイルを読み込んで、情報を取り出すところまでの処理について取り上げますが、その大まかな処理の流れは以下のようになります。
- ドキュメントビルダを生成する
- パースしてDOMのオブジェクトを取得する
- ノードをたどって必要な情報を取り出す
これらの処理について詳しく見ていくことにしましょう。
[1]ドキュメントビルダを生成する
まずドキュメントビルダを生成します。そのためにはまずドキュメントビルダファクトリを生成するところから始めます(リスト4)。
DocumentBuilderFactory factory = |
| リスト4 ドキュメントビルダの生成 |
[2]パースしてDOMのオブジェクトを取得する
ドキュメントビルダが生成できたら、XMLのファイル(設定ファイルですね)をパースし、DOMのオブジェクトを取得するだけです(リスト5)。
FileInputStream in = new FileInputStream( .... ); |
| リスト5 パースしてDOMのオブジェクトを取得する |
前回は、URIを指定してパースするparseメソッドを用いました。今回はローカルのファイルを処理するケースが多いだろうという前提から、InputStreamを引数にとるparseメソッドを利用しています。
[3] ノードをたどって必要な情報を取り出す
まずは接続情報を表すconnectionのノードを取り出してみます。前回見たように、ドキュメントビルダによって返されるノードはDocumentノードになっていますから、その子どもを取り出します(リスト6)。
Node connection = root.getFirstChild(); |
| リスト6 connectionノードの取り出し |
さて、ここからが本番です。connectionに含まれる子どものノードを取り出して、1つ1つ内容を確認していきます。
NodeList params = connection.getChildNodes();String driver = null;for (int i = 0; i < params.getLength(); i++) { |
| リスト7 子ノードの取り出し |
getChildNodes()で子ノードの一覧を取る操作は前回も出てきました。各ノードをforで1つずつ取り出しているところも同じです。
ポイントは、子ノードがElement、つまりタグの場合に、そのタグ名を確認し、その値を変数にセットしているところです(driver、 url、 user、password)。
propertyの場合のみ、属性値を取り出してハッシュテーブル(実際にはPropertiesのインスタンス)にセットしていますので注意してください。
前回は、子ノードのリストに対してインデックスを指定し、直接子ノードを取り出す操作を行っていました。今回も同様の処理でよさそうなものですが、そうはなっていません。前回少し話に上がりましたが、空白や改行もテキストノードとして子ノードのリストに含まれます。空白や改行があるかどうかは、ファイルの書き方によるため、インデックスを直接指定するような書き方ではうまく動かないわけです。
| 設定ファイルの更新 |
| Index | |
| Javaで実現するDOM/SAXプログラミング(3) DOMプログラムの実例 |
|
| サンプル 〜 JDBCの接続設定 ドキュメントビルダファクトリの生成 ドキュメントビルダの生成 パース |
|
| 設定ファイルの参照 [1]ドキュメントビルダを生成する [2]パースしてDOMのオブジェクトを取得する [3]ノードをたどって必要な情報を取り出す |
|
| 設定ファイルの更新 [1] 設定値の更新 [2]ファイルへの出力 まとめ |
|
| 「連載 Javaで実現するDOM/SAXプログラミング」 |
TechTargetジャパン
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
