XMLをJavaで…1
http://www.hellohiro.com/xmldom.htmによるとXMLをJavaで扱うにはDOMって概念が分からないといけないみたいだ。「DOMはDocument Object Modelの略です。XMLにアクセスするためのAPI(Application Programming Interface)です。W3Cによって仕様が公開されています。DOMは、XML文書をツリー構造として扱います。これを「DOMツリー」といいます。XML文書全体を解析してDOMツリーとしてメモリ上に保存するのでデータの多いXML文書を解析する場合は多くのメモリを消費します。」
ってことなんだけどこれを読んでもイマイチ分からないので、サンプルコードを見ながら勉強していくことにする。このサンプルコードを適当に変えれば自分の欲しい情報とってこれそうなんだけど、原理から理解するつもりで勉強しよう。サンプルコードは以下の通り。
helloworld.xml
<?xml version="1.0" encoding="Shift_JIS" ?> <message>Hello World</message>
HelloWorldDOM.java
import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.Document; import org.w3c.dom.Element; public class HelloWorldDOM { public static void main (String[] args) { try { // ドキュメントビルダーファクトリを生成 DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance(); // ドキュメントビルダーを生成 DocumentBuilder builder = dbfactory.newDocumentBuilder(); // パースを実行してDocumentオブジェクトを取得 Document doc = builder.parse(new File("helloworld.xml")); // ルート要素を取得(タグ名:message) Element root = doc.getDocumentElement(); // 最初の子ノード(テキストノード)の値を表示 System.out.print(root.getFirstChild().getNodeValue()); } catch (Exception e) { e.printStackTrace(); } } }
これを実行するとやっと 「Hello World」って文字が出力されるみたい。何をやっているか1つ1つ解説してみるか。
DocumentBuilderFactory とはXML ドキュメントから DOM オブジェクトツリーを作成するパーサをアプリケーションが取得できるようにするファクトリ。(http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/javax/xml/parsers/DocumentBuilderFactory.html)
XML ドキュメントから DOM Document インスタンスを取得する API を定義します。このクラスを使用すると、アプリケーションプログラマは XML ドキュメントから Document を取得することができます。(http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html)
Element インタフェースは、HTML 文書または XML 文書内の要素を表します。これらの要素は、自身に関連付けられた属性を持つことができます。 (http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html)
NodeList インタフェースは、順序付けられたノードの集合の抽象を提供します。この集合の実装方法を定義または制限することはありません。DOM 内の NodeList オブジェクトはライブオブジェクトです。http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html
他に参考ページhttp://takeoba.com/index.php?%A4%E2%A4%C3%A4%C8Java%A4%CE%CC%E7