【Java入門】XMLの扱い方(DOM、SAX、プロパティファイルも解説)

こんにちは!フリーランスの長野です。

JavaでXMLファイルって使っていますか? XMLファイルは項目と値のセットを人やソフトウェアが読み込めるように構成することができるので、データの保存や設定値を保存する場合によく使われます。

この記事では、JavaでのXMLファイルの扱い方について

  • XMLとは?
  • XMLファイルを読み込む方法
  • XMLファイルへ出力する方法

といった基本的な内容から、

  • プロパティファイルに読み書きする方法
  • オブジェクトのSerialization

など応用的な内容についても解説していきます。今回はJavaでのXMLファイルの扱い方について、わかりやすく解説します。

XMLとは?

XMLとは、Extensible Markup Languageの略です。マークアップ言語ですので、WEBサイトのデザインで使われるHTMLと似ています。マークアップ言語とは、タグと値のセットで作られ、文章を構造化する言語のことです。

HTMLはブラウザが読み込むためのタグで構成されていますが、XMLは人やソフトウェアが読み込めるように構成することができます。以下はXMLファイルの簡単な例です。

Sample.xml:

XMLファイルを読み込む方法

XMLファイルを扱う際に、Javaでは操作するAPIが主に2つ用意されています。DOMとSAXです。

DOMはDocument Object Modelの略で、要素がノードで表され、ノードの関係がノードツリーで表されます。ツリー構成はパソコン内のフォルダやファイルにも用いられています。

SAXはSimple API for XMLの略で、要素を先頭から順にひとつずつイベントの連続として読み込みます。それぞれの使い方についてみていきましょう。

DOM

まずはDOMのAPIを使う方法について説明します。XMLファイルを読み込む準備をします。javax.xml.parsersパッケージのDocumentBuilderクラスやDocumentBuilderFactoryクラスを使います。

次にorg.w3c.dom.Documentクラスを使ってXMLファイルを読み込みます。そしてorg.w3c.dom.Elementクラスを使って要素を取得します。

ノードの名前を取得するにはgetNodeNameメソッドを、属性値を取得するにはgetAttributeメソッドを使います。ノードのリストを取得するにはorg.w3c.dom.NodeListクラスを使います。サンプルコードで確認しましょう。

読み取るXMLファイルは先ほどのSample.xmlを使います。

実行結果:

SAX

次はSAXのAPIを使う方法について説明します。同じようにXMLファイルを読み込む準備をします。javax.xml.parsersパッケージのSAXParserクラスやSAXParserFactoryクラスを使います。

SAXのAPIの場合はorg.xml.sax.helpers.DefaultHandlerクラスを継承して、それぞれのイベントが発生した際の処理を記述します。例えば、ドキュメントの読み込みが開始された場合は、startDocumentメソッドに記述した内容が処理実行されます。

また開始ノードに達した場合は、startElementメソッドに記述した内容が処理実行されます。サンプルコードで確認しましょう。読み取るXMLファイルは先ほどのSample.xmlを使います。

実行結果:

DefaultHandlerクラスのメソッドについては、こちらで詳しく解説していますので参考にしてください。

https://docs.oracle.com/javase/jp/8/docs/api/org/xml/sax/helpers/DefaultHandler.html

XMLファイルへ出力する方法

DOMのAPIを使ってXMLファイルへ出力する方法について説明します。XMLファイルへ出力する準備は読み込みとほぼ同じです。

ノードツリーを作成するために、createElement、setAttribute、appendChild、createTextNodeなどのメソッドが用意されています。作成したノードツリーをTransformerFactoryクラス、Transformerクラスを使って変換します。

サンプルコードで確認しましょう。

実行結果(Sample.xml):

プロパティファイルに読み書きする方法

Javaにはプロパティファイルと呼ばれるファイルがあります。定数や規定値などの設定を記載するファイルとしてよく使われます。このプロパティファイルをXML形式のファイルにする方法を説明します。

Java5からXML形式でもプロパティファイルを記述できるようにメソッドが追加されました。プロパティファイルを扱うにはjava.util.Propertiesクラスを使います。

XML形式のプロパティファイルを読み込むには、loadFromXMLメソッドを使います。XML形式のプロパティファイルに書き込むには、storeToXMLメソッドを使います。サンプルコードで確認しましょう。

実行結果:

Sample.xml:

プロパティファイルについては、こちらで詳しく解説していますので、ぜひ参考にしてください。

【Java入門】プロパティファイルの読み込み方法(Properties)
更新日 : 2019年4月24日

オブジェクトのSerialization

JavaBeansの仕様に沿ったオブジェクトのデータをシリアライズ、デシリアライズする方法について説明します。シリアライズとはデータの永続化、つまりファイルに保存することです。

逆にファイルからデータを復元することをデシリアライズといいます。ちなみにシリアライズを直列化と説明されている場合もあります。この場合はファイルにデータを保存する際に、1列のデータ列に変換して保存することを指して直列化と説明されています。

JavaBeansのパッケージにはオブジェクトのデータをシリアライズ、デシリアライズするためにXMLEncoderクラスとXMLDecoderクラスが用意されています。クラス名にXMLが付いていますので、XML形式で書き出します。

XMLEncoderクラスはJavaBeansクラスのオブジェクトのデータをXML形式に変換するためのクラスです。同じようにXMLDecoderはXML形式で保存されたファイルからデータを復元するためのクラスです。使い方をサンプルコードで確認しましょう。

InfoBean.java:

BeanSample.java:

実行結果:

Sample.xml:

JavaBeansについては、こちらで詳しく解説していますので、ぜひ参考にしてください。

JavaBeansとは?仕様や使い方、永続化について解説
更新日 : 2019年4月30日

まとめ

ここではJavaでのXMLファイルの扱い方について説明しました。XMLファイルは項目と値がセットになったデータを人やソフトウェアが読み込めるように構成することができるので便利です。使いこなすことができるように、この記事を何度も参考にして下さいね!

Javaカリキュラム無料公開中!

この記事はJava入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Java学習に必要な情報を一つにまとめていますので効率よくJavaを学ぶことが出来ます。この機会に是非活用していただければと思います。

Java入門からアプリ開発まで未経験者が知っておくべき基礎を総ざらい
更新日 : 2019年5月22日

最短でJavaを習得したい方へ

もし、あなたが、

「難しすぎて学習が全然進まない」
「学習量が膨大でゴールが見えない」
「エラーを解決するのに何日もかかってしまう」

など、プログラミング学習やキャリアに関してお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_bannar-java2
LINEで送る
Pocket

書いた人

長野 透

長野 透

熊本在住のフリープログラマ兼ライターです。C/C++/C#、Java、Python、HTML/CSS、PHPを使ってプログラミングをしています。専門は画像処理で最近は機械学習、ディープラーニングにはまっています。幅広くやってきた経験を活かしてポイントをわかりやすくお伝えしようと思います。
お問合せはこちらでも受け付けています。
[email protected]

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説