何かと便利なXMLをJavaで扱うことができる。そのXMLを取り込んでいろいろやってみる。それぞれのクラスのインスタンス化が特殊なのが特徴。
java.xml.parsers編
DocumentBuilderFactory抽象クラス
XMLドキュメントからDOMツリーを生成するパーサーを取得できるファクトリAPIを定義する抽象クラス(Javadocより)。
まず、このクラスをインスタンスするには
DocumentBuilderFactory documentbuilderfactory = DocumentBuilderFactory.newInstance();
のようにnewせずにメソッドで(DocumentBuilderFactoryは抽象クラスのため、newでインスタンスを生成できない)インスタンスを生成する。
さらにちょっとした設定は
documentbuilderfactory.setIgnoringComments(true);
documentbuilderfactory.setNamespaceAware(true);
documentbuilderfactory.setXIncludeAware(true);
のようなメソッドを使って設定できる。
後述する、DocumentBuilder抽象クラスをインスタンスを生成するにはこのクラスで定義されているnewDocumentBuilderメソッドで次のようにインスタンスを生成する。
DocumentBuilder documentbuilder = documentbuilderfactory.newDocumentBuilder();
このクラスも抽象クラスなので、newでインスタンスを生成することはできない。
newInstanceメソッド
DocumentBuilderFactoryクラスをインスタンス化するためのメソッド。
setIgnoringCommentsメソッド
パーサー中にコメントを無視するか指定するメソッド。デフォルトではfalseになっており、無視されないようになっている。
setNamespaceAwareメソッド
パーサー中に名前空間をサポートするか指定するメソッド。デフォルトではfalseになっており、サポートされないようになっている。
setXIncludeAwareメソッド
XIncludeを発見したときの処理を指定するメソッド。デフォルトではfalseになっており、XIcludeが見つかっても無視する。
newDocumentBuilerメソッド
DocumentBuilder抽象クラスをインスタンス化するための抽象メソッド。
DocumentBuilder抽象クラス
XMLドキュメントからDocumentインスタンスを取得するための抽象クラス。
このクラスからDocumentを取得するときはnewDocumentメソッドでDocumentインターフェースをインスタンスするか、parseメソッドでDocumentオブジェクトを返すかである。
例えば、
Document document = documentbuilder.parse(new FileInputStream("test.xml"));
のように取得したいファイル(XMLとか)を指定して、Documentオブジェクトを取得できる。
parseメソッド
指定された内容をXMLドキュメントとして構文解析して、Documentオブジェクトを返すメソッド。
org.w3c.dom編
Documentインターフェース
HTML文書またはXML文書を表すインターフェース。
DocumentオブジェクトからElementオブジェクトを取得するには
Element element = document.getDocumentElement();
のようにgetDocumentElementメソッドを使うと良い。
getDocumentElementメソッド
ドキュメントから要素を取得して、Elementオブジェクトを返すメソッド。
Elementインターフェース
HTML文書またはXML文書内の要素を表すインターフェース。
このインターフェースでようやくXMLからタグを取得することができる。
タグの名前の取得方法は
element.getTagName()
で取得できる。
getTagNameメソッド
要素の名前を取得するメソッド。
NodeListインターフェース
順序付けられたノードのコレクションを扱うためのインターフェース。
例えば、リストのノードごとに項目を取得するには
for(int i = 0;i<nodelist.getLength();i++)
{
nodelist.item(i);
}
のような感じ。
itemメソッド
リスト集合内での指定した番号の項目を返すメソッド。
getLengthメソッド
リスト内のノード数を返すメソッド。
Nodeインターフェース
DOMツリーのノードを表すためのインターフェース。
例えば、XMLで親要素が子要素があるかどうか確認するには、
Node node = nodelist.item(i);
Element prop = (Element)node;
if(prop.hasChildNodes())
{
System.out.println("子要素あり");
}
これで取得した要素に子要素が存在するとturuを返す。
hasChildNodesメソッド
ノードが子ノードを持っているかどうかを判断するメソッド。子ノードがあるときはtrueを返す。
さいごに
まだまだJavaでXMLを扱うものは存在する。