便利なコードパーツ集!

やまろうのプログラミングTips

Java

[Java] DOMでXMLを読み込む

投稿日:2016年12月6日 更新日:

2003/02/28
どうもー、やまろうでぃーす。
2日間のXML講習に行ってきました。たぶん受講料とか高いんだろうけど、
会社持ちなのでOKなのね。元請けの会社のご厚意で参加させて
頂きました(感謝)。

内容はJavaでDOMやSAXを使ってXMLを操作するってやつ。
XMLってずいぶん前から注目されてたけど、結局今まであまり
お目にかかることは少なくて、web.xmlとか、ejb_jar.xmlとか
設定ファイル等の脇役的存在でした。所がここに来て主役の座へ
躍り出ようとしています。それがWebサービスです!Webサービスってのは
リモート呼出しの出来る関数なんですけど、その関数の戻り値は
XMLなのです。ということでこれからがXMLの真価が問われるって
わけです。

で、プログラムからXMLを解析するには
・自力でタグを解析するコードを書く
・DOMやSAX等のAPIを使う
の2通りがあります。

DOMはXMLファイルを一気に全て読み込んで、メモリー上にツリー構造
に展開します。メモリーをたくさん消費しますが、要素へのアクセスが
簡単です。DOMはW3Cの規格です。

SAXはXMLファイルを少しずつ読み込んで、開始タグが見つかったよー、
等のイベントを通知してきます。軽快で高速に動作しますが、
要素へのアクセスはDOMより面倒です。単純な処理に向いてるようです。
SAXはメーリングリストから生まれたそうです。

今回はDOM使って、
以下のようなXMLファイル(peopleData.xmlの名前で保存)

<?xml version="1.0" encoding="Shift_JIS" ?>
<people>
<person>
<name>田中</name>
<tall>154</tall>
</person>
<person>
<name>太田</name>
<tall>170</tall>
</person>
</people>

を読み込んで田中の身長を表示します。
それではソースを見て下さい。

スポンサーリンク



(1)から(4)で、XMLファイルを読み込んでメモリー上にツリー構造で
展開しています。といってもAPIが勝手にやってくれます。呼び出すだけ。
(7)からがプログラマの出番です。
(7)でXMLの情報部のルート、つまり<people>〜</people>を
取得してます。
(8)で"person"という名前の要素の一覧を取得。
(9)で一覧の要素数を取得して、
(11)のfor文で1要素ずつ処理していくってわけです。
(14)でnameタグの値を取得して、
(16)それが田中かどうか比較して、
田中だったら、検索終了なのでfor文を抜けます。
(20)でtallタグの値を取得して、出力して終了ってわけです。

では実行してみましょう!

今回のプログラムはXMLの処理にJAXPというパッケージを使っています。
JAXPはJDK1.4には標準で含まれています。もし、1.4より前の
JDKを使ってる方は1.4をインストールするかJAXPパッケージを
ダウンロードしてクラスパスに追加して下さい。

それでは、このメルマガをDirSearch.javaという名前で保存してください。
そして、上の方で出てきたXMLをpeopleData.xmlという名前でソースと
同じフォルダに保存します。

DOSプロンプトで
javac -d . XMLSearch.java

java dom.XMLSearch

実行結果

田中の身長は154cm

ってなわけです。
どうでしたか、XMLプログラミング。面白いけど、けっこう面倒くさい
なぁというのが僕の感想です。

んじゃぁねぇーーーーーー!!

スポンサーリンク

-Java

Copyright© やまろうのプログラミングTips , 2020 AllRights Reserved Powered by AFFINGER4.