2.2. Document
XML文書をDOMで操作するには、まずDocumentインタフェースを実装したオブジェクトを取得する必要があります。Documentインタフェースは、XML文書そのものを表します。以下は前章で例に挙げたプログラムです。
import java.io.*; import org.w3c.dom.Document; import org.w3c.dom.Node; import javax.xml.parsers.*; public class SimpleDOMSample{ public static void main(String args[]) throws Exception{ Document document= DocumentBuilderFactory .newInstance() .newDocumentBuilder() .parse(new File("helloWorld.xml")); Node node=document.getDocumentElement(); Node childNode=node.getFirstChild() System.out.println(childNode); } }
10-14行目でDocumentを取得しています。まず、11行目でDocumentBuilderFactoryのインスタンスを取得しています。13行目でDocumentBuilderFactoryのnewDocumentBuilderメソッドを使用して、DocumentBuilderオブジェクトを取得しています。DocumentBuilderオブジェクトは、DOMのDocumentを取得するオブジェクトです。DocumentBuilderのparseメソッドによってDocumentを取得します。
DocumentBuilderのparseメソッドには、以下の5種類があります。
- parse(InputStream is)
パラメータに指定されたInputStreamからXML文書を読み取り、Documentを作成する。 - parse(InputStream is,String systemId)
パラメータに指定されたInputStreamからXML文書を読み取り、Documentを作成する。2番目の引数では、相対URIを解決するためのベースを指定します。 - parse(String uri)
パラメータで指定されたURIの内容を読み取り、Documentを作成する。 - parse(File f)
パラメータで指定されたファイルを読み取り、Documentを作成する。 - parse(InputSource is)
パラメータで指定されたInputSourceからXML文書を読み取り、Documentを作成する。
このプログラムでは、3番目のparseメソッドを使用して、Documentを取得しています。
16行目でルート要素を取得しています。ルート要素はgetDocumentElement()メソッドにより取得します。戻り値はElementになります。このように、Documentは最大1個のElementを子ノードとして持ちます。この他にも、Documentの子供ノードには、以下のものがあります。子ノードはgetChildNodes()メソッドでも取得可能です。
ノードのタイプ | 内容 | 取得メソッド | 例 | 備考 |
---|---|---|---|---|
Element | ルート要素 | getDocumentElement() | 5行目"webapp" | 最大1個 |
DocumentType | 文書タイプ | getDoctype() | 2-4行目 | 最大1個 |
ProcessingInstruction | 処理命令 | |||
Comment | コメント |