【Java入門】XMLをDOM、SAXで読み込み要素を取得する方法

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

JavaでXMLファイルって使っていますか?

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

この記事では、XMLファイルの読み込み方法について

・XMLとは?
・DOMとは?SAXとは?

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

・DOMで読み込む方法
・SAXで読み込む方法
・プロパティファイルやSerializationについて

など具体的な内容についても解説していきます。

今回はXMLファイルの読み込み方法について、わかりやすく解説します。

XMLとは?

XMLとは、Extensible Markup Languageの略です。

マークアップ言語ですので、WEBサイトのデザインで使われるHTMLと似ています。

マークアップ言語とは、タグと値のセットで作られ、文章を構造化する言語のことです。

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

以下はXMLファイルの簡単な例です。

Sample.xml:

DOMとは?SAXとは?

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

DOMSAXです。

DOM

DOMはDocument Object Modelの略で、要素がノードで表され、ノードの関係がノードツリーで表されます

ツリー構成はパソコン内のフォルダやファイルにも用いられています。

SAX

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

DOMで読み込む方法

まずはDOMのAPIを使う方法について説明します。

準備とXMLの読み込み

javax.xml.parsersパッケージのDocumentBuilderクラスやDocumentBuilderFactoryクラスを使います。

次にorg.w3c.dom.Documentクラスを使ってXMLファイルを読み込みます。

タグ名と属性値の取得

それでは要素を取得する方法を説明します。

org.w3c.dom.ElementクラスのgetDocumentElementメソッドを使って要素を取得します。

ノードの名前を取得するにはgetNodeNameメソッドを、属性値を取得するにはgetAttributeメソッドを使います。

子ノードの取得

XMLではノード内にノードを記述することが多くあります。

org.w3c.dom.NodeListクラスで子ノードのリストを扱います。

子ノードのリストを取得するにはgetChildNodesメソッドを使います。

子ノードはorg.w3c.dom.Nodeクラスで扱います。

サンプルコードまとめ

サンプルコードをまとめて実行結果を確認してみましょう。

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

実行結果:

SAXで読み込む方法

次はSAXのAPIを使う方法について説明します。

準備とXMLの読み込み

同じようにXMLファイルを読み込む準備をします。

javax.xml.parsersパッケージのSAXParserクラスやSAXParserFactoryクラスを使います。

parseメソッドの第2引数でSAXsampleクラスのインスタンスを指定しています。

このSAXsampleクラスは自作のクラスでorg.xml.sax.helpers.DefaultHandlerクラスを継承しています。

org.xml.sax.helpers.DefaultHandlerクラスの継承について説明します。

DefaultHandlerクラスの継承

SAXのAPIの場合はorg.xml.sax.helpers.DefaultHandlerクラスを継承して、それぞれのイベントが発生した際の処理を記述します。

例えば、ドキュメントの読み込みが開始された場合は、startDocumentメソッドに記述した内容が処理実行されます。

また開始ノードに達した場合は、startElementメソッドに記述した内容が処理実行されます。

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

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

サンプルコードまとめ

サンプルコードをまとめて実行結果を確認してみましょう。

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

実行結果:

プロパティファイルやSerializationについて

この記事ではXMLファイルをDOMやSAXのAPIを使って読み込む方法について解説しました。

JavaではXML形式のプロパティファイルJavaBeansクラスのオブジェクトデータをXML形式から読み込むこともできます。

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

【Java入門】XMLの扱い方(DOM、SAX、プロパティファイルも解説)
更新日 : 2019年5月22日

まとめ

ここではXMLファイルの読み込み方法について説明しました。

XMLファイルは項目と値がセットになったデータを人やソフトウェアが読み込めるように構成することができるので便利です。

使いこなすことができるように、この記事を何度も参考にして下さいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

長野 透

長野 透

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

おすすめコンテンツ

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

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