Javaによるプログラミングに関する世界観3E(XML)です。
JavaでXMLを扱うためには、DOM(Document Object Model)およびSAX(Simple API for XML)を使う。
SAXは、XMLを読み込みながら、ひとつひとつの要素が読み込まれるたびにイベントを通知する。
DOMは、ドキュメントに含まれるノードから成るツリーを作り、ツリー構造でXMLドキュメントの要素にアクセスできる。
SAXを使う場合、SAXParserFactoryクラスおよびSAXParserクラスを使う(javax.xml.parsersパッケージ)。
| メソッド | 説明 |
|---|---|
| newInstance() | 新しいSAXParserFactoryのインスタンスを作る |
| newSAXParser() | SAXParserFactoryを元に、SAXParserのインスタンスを取得する |
| parse() | XMLのパースとイベントの通知を開始する |
そして、DefaultHandler(org.xml.sax.helpersパッケージ)を継承して、
| メソッド | 説明 |
|---|---|
| startDocument() | ドキュメントの開始 |
| endDocument() | ドキュメントの終了 |
| startElement() | 要素の開始 |
| endElement() | 要素の終了 |
| characters() | 文字データの通知 |
などにイベント通知時の処理を記述する。
以下のページを参考に執筆しました。
2026.03.07編集
DOMを使う場合、DocumentBuilderFactoryクラスおよびDocumentBuilderクラス(javax.xml.parsersパッケージ)を使う。
| メソッド | 説明 |
|---|---|
| newInstance() | 新しいDocumentBuilderFactoryのインスタンスを作る |
| newDocumentBuilder() | DocumentBuilderFactoryを元に、DocumentBuilderのインスタンスを取得する |
| parse() | DocumentBuilderを元に、ドキュメントを取得する |
| getDocumentElement() | ドキュメントを元に、エレメントノードを取得する |
また、DocumentクラスやNodeクラスやElementクラスがある(org.w3c.domパッケージ)。
以下はNodeインターフェースのメソッド。
| メソッド | 説明 |
|---|---|
| getFirstChild() | 最初の子ノードを取得する |
| getNodeType() | ノードの型を取得する |
| getNodeValue() | ノードの値を取得する |
| getNextSibling() | 次に続くノードを取得する |
| getNodeName() | ノードの名前を取得する |
| getAttribute() | ノードの属性値を取得する |
ノードのリストはNodeListクラス(org.w3c.domパッケージ)で取得できる。
ノードツリーの作成は、
| メソッド | 説明 |
|---|---|
| createElement() | 要素を作る |
| appendChild() | 子要素の追加 |
| setAttribute() | 属性と値を指定 |
| createText() | 要素の内容を作る |
で行う。そして、作り終えたノードツリーは、TransformerFactoryクラスおよびTransformerクラスを用いて、ソースコードとツリーを変換する(javax.xml.transformパッケージ)。
以下のページを参考に執筆しました。
2026.03.07編集
JavaBeansのパッケージにはオブジェクトのデータをシリアライズ、デシリアライズするためにXMLEncoderクラス(JavaBeansのデータをXMLに変換)とXMLDecoderクラス(XMLからデータを復元)が用意されている。
Javaクラスライブラリ(入出力)やシリアライズも参照のこと。
Javaにはプロパティファイルと呼ばれるものがある。これは各種の設定値を記述するもので、Java 5以降からはXML形式でも出力が可能になった。
Boost.PropertyTreeを用いたC++でのiniファイルの読み書きはC++(STL・ライブラリ)も参照のこと。
JavaScript(2.DOM/Canvas)を参照のこと。
JSONを参照のこと。