検索
連載

Java Tips:JAXPを使ってXML文書を読み込むにはJAVA Developer

JavaのプログラムからXML文書(ファイル)にアクセスする手段は、XML文書を処理するXMLプロセッサに依存します。J2SEでは標準APIとしてJAXPを提供しており、特定のXMLプロセッサに依存することなくXML文書を読み込むことができます。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

XML文書の読み込み方法にはDOMとSAXがある

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 WebアプリケーションにおいてXML文書を利用する機会が増えており,XML文書を利用するためのソリューションも整いつつあります。ここでは,XML文書を利用するための基礎として,DOM(Document Object Model)によるXML文書の読み込み方法を紹介します。なお,XML文書の基本的な読み込み方法としては,DOMのほかにSAX(Simple API for XML)を利用する方法もあります。次の表は,DOMとSAXの一般的な特徴を整理したものです。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 JAXPとDOMによってXML文書を読み込む場合は,リスト1に示すようにjavax.xml.parsers.DocumentBuilderFactoryオブジェクトを作り,さらにjavax.xml.parsers.DocumentBuilderオブジェクトを作ります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 太字のDocumentBuilder#parseメソッドが,実際にXML文書を読み込みパース(解析)する部分です。パースした結果をorg.w3c.dom.Documentオブジェクトに格納しています。このDocumentオブジェクトは,XML(またはHTML)文書全体を表すもので,これを使って文書ツリーにアクセスします。具体的には,Document#getDocumentElementメソッドを使ってルート要素(org.w3c.dom.Elementオブジェクト)を取得。次にElement#getChildNodesメソッドでその要素を構成する子ノード一覧を表すorg.w3c.dom.NodeListオブジェクトを取得し,各ノードにアクセスします。

 ノードから取得できる情報は,ノード型(nodeType)によって異なります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 次にサンプルのXML文書を示します。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 DOMでは,XML文書を細分化し,それぞれをノードとして扱います。たとえばルート要素であるdataやその子要素であるitemは,ノード型ELEMENT_NODEのノードとなり,item要素の属性であるtypeはノード型ATTRIBUTE_NODEのノードとなります。また,要素の内容を示すasahi.comやhttp://www.asahi.com/はTEXT_NODEのノードとなります。このほか,タグとタグの間にある改行やスペースもTEXT_NODEのノードとして扱われます。

 具体的にプログラムを見てみましょう。リスト3は,item要素の属性とその子要素の内容を取得するものです。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 要素の属性は,getAttributesメソッドを使ってorg.w3c.dom.NamedNodeMapオブジェクトを取得します。ここではすべての属性(ノード)を順番に取得していますが,NamedNodeMap#getNamedItemメソッドに属性名を与えてその属性を取得することも可能です。

 子要素の取得は,ルート要素の場合と同じNode#getChildNodesメソッドを使います。ここでは,ノード型を取得して要素(ELEMENT_NODE)であれば,その子ノード(TEXT_NODE)の値を取得して表示しています。リスト2のように内容が省略されている場合,要素のを格納する子ノードは存在せず,getFirstChildメソッドの戻り値はnullになります。リスト3では,その例外(NullPointerException)をキャッチして対応しています。

 リスト3を実行すると,コンソールには次のように表示されます。リスト2がパースされ,要素の属性や内容を取得できていることがわかります。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 「JAVA Developer」より毎週役立つJava Tipsを配信中。ほかにも参考になるTipsは、JAVA Developerサイトのバックナンバーから探すことが可能です。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

Copyright(C) 2010 SOFTBANK Creative Inc. All Right Reserved.

ページトップに戻る