今回は,商品一覧を表示する簡単なツールの作成を通じて,データ表現形式の主流になりつつあるXMLファイルをJavaでどう扱うかを見ていくことにします。多くの場面で使われるXMLファイルの扱い方を覚えれば,仕事の幅も広がること間違いなしです。

こちらからサンプルプログラムをダウンロードできます。

 皆さんこんにちは,kikainekoです。この連載では,日々の定型的な業務をJavaで自動化してラクする方法を紹介しています。前回は,Wordファイルの扱い方を説明してきました。Javaによるファイル操作には,ずいぶん慣れてきたのではないでしょうか。

 今回は,データ表現形式の主流と言っても過言ではないXMLファイルを取り上げます。XMLで記述されたファイルを,Javaからどのように操作するかを一緒に学びましょう!

 XMLファイルを操作するといっても,特に身構える必要はありません。実は,皆さんの周りにはすでにXMLで記述された文書が数多く存在しています。例えば,Java開発で利用するツールの設定ファイルの多くは,XML形式で記述されています。データをXML形式で格納するケースも少なくありません。第3回第4回で扱ったExcelファイルなども,XML形式に変換することが可能です。

 今後,XMLはより多くの場面で使用されるようになるのは間違いないでしょう。今のうちにXMLを制覇して,仕事の幅を広げてしまいましょう!

XMLで記述されたファイルから
商品一覧を表示するツールを作成しよう

 今回はサンプル・ツールとして,商品名と値段がXML形式で記述されている商品一覧を読み込んで,表形式に変換するプログラムを作成します(図1)。

図1●作成するツールのイメージ
図1●作成するツールのイメージ
[画像のクリックで拡大表示]

 このツールを作るためには,Javaを使ってXMLファイルを解析する方法を学ぶ必要があります。つまり,XML形式で書かれたファイルから,何がどこに書かれているかを把握したうえでJavaからそのデータを操作できなければいけません。まずは,その方法を確認しておきましょう。

 XMLファイルをJavaから操作する方法は,いくつか存在します。最も単純なのは,ファイルの中身を自分で地道に解析するという方法です。

 XMLファイルはHTMLファイルと同様に,テキスト・ファイルに「<」と「>」でくくられたタグが階層的に書かれているのが基本です。なので,テキスト・ファイルの内容を1文字ずつ確認していき,「<」と「>」を見つけていくことで,タグの解析は可能です。しかし,ただ「<」と「>」を探していけばよいかというと,そう単純ではありません。

 リスト1は,単純な解析ができない例です。問題になるのは,「小 < 大」の「<」の部分です。「<」はタグの始まりなのか,それとも値を比べている不等号なのか,ちょっと考えてしまうところです*1

<font color="red">
  小 < 大
</font>
リスト1●XML形式で書かれたHTML文書の例

 通常のHTMLなどでは,このような問題を回避するために「<」を「&lt」,「>」を「&gt」として表現するように推奨しています。「<」を「小なり」,「>」を「大なり」と呼ぶことから推測できるように,ltは「less than」,gtは「greater than」の略ですね。しかし,ユーザーが常に「&gt」のような形で書いてくれる保証はどこにもありません。結局は,解析する側が注意して作業を進める必要があります。それでも,XMLファイルの数が膨大になると,単純なやり方で解析していくのにはさすがに限界が生じてきます。

 そこでJavaでは,もっと便利なXMLファイルの解析方法を用意しています。XMLファイル解析用のAPIを使う,というのがそれです。今回も,この方法を使います。