Java API for XML Processing
Java API for XML Processing(JAXP)は、JavaでXMLを扱うためのAPIのひとつ。XML文書の妥当性検証や構文解析のためのインタフェ�…
Java API for XML Processing(JAXP)は、JavaでXMLを扱うためのAPIのひとつ。XML文書の妥当性検証や構文解析のためのインタフェースを提供する。次の2つの基本的な構文解析インタフェースを備える。
- Document Object Modelによる構文解析インタフェース (DOMインタフェース)
- Simple API for XMLによる構文解析インタフェース(SAXインタフェース)
JAXP 1.4からは、3番目のインタフェースが追加されている。
- Streaming API for XMLによる構文解析インタフェース(StAXインタフェース、JSR 173)
JAXPは、構文解析インタフェースに加え、XML文書のデータや構造の変換を行うためのXSLTインタフェースも提供している。JAXPは、Java Community Processの下でJSR 5(JAXP 1.0)、JSR 63(JAXP 1.1と1.2)、JSR 206(JAXP 1.3と1.4)として開発された。2007年現在の最新バージョンは1.4。J2SE 1.4以降はJAXPの実装を含むようになり、J2SE 5.0はJAXP 1.3の実装を、Java SE 6はJAXP1.4の実装を含んでいる。
DOMインタフェース
おそらく最も理解しやすいのがDOMインタフェースであろう。XML文書全体を構文解析し、文書内のすべての要素に相当するメモリ内表現を、Document Object Model(DOM) Level 2 Core Specificationで規定されたモデルに基づくクラスで構築する。
DOMパーサー(構文解析機)は、メモリ上にDocument表現を構築 (build) するので、DocumentBuilderと呼ばれる。javax.xml.parsers.DocumentBuilderは、javax.xml.parsers.DocumentBuilderFactoryにより生成される。DocumentBuilderは、XML文書内の全ノードを含んだ木構造のorg.w3c.dom.Documentインスタンスを生成する。木構造内の各ノードは、org.w3c.dom.Nodeインタフェースを実装している。ノードには、XML文書内のデータ型を表すいろいろなノードタイプがある。最も重要なノードタイプとして、次のようなものがある。
- 要素(element)ノード。属性(attribute)を持つ場合がある。
- テキスト(text)ノード。要素の開始タグと終了タグの間に記述されたテキストを表す。
全ノードタイプの一覧は、Javaパッケージorg.w3c.domのJavadocを参照のこと。
SAXインタフェース
SAXパーサーはSAXParserと呼ばれ、javax.xml.parsers.SAXParserFactoryによって生成される。DOMパーサーと違い、SAXパーサーはメモリ内にXML文書の表現を作らないので、より高速でメモリ使用量が少ない。その代わりに、SAXパーサーは、コールバックを呼び出す、すなわち、あらかじめパーサーに渡しておいたorg.xml.sax.helpers.DefaultHandlerインスタンスのメソッドを呼び出すことで、XML文書の構造をクライアントに通知する。
DefaultHandlerクラスはContentHandler、ErrorHandler、DTDHandler、EntityResolverの各インタフェースを実装している。ほとんどのクライアントは、ContentHandlerインタフェースで定義されたメソッドを使うことになる。これらのメソッドは、XML文書内の対応する要素をSAXパーサーが見つけたときに呼び出される。SAXインタフェースの中でもっとも重要なメソッドとして、次のようなものがある。
startDocument()とendDocument()メソッド。XML文書の先頭と末尾で呼び出される。startElement()andendElement()メソッド。要素の開始地点と終了地点で呼び出される。characters()メソッド。要素の開始タグと終了タグの間にあるテキストデータで呼び出される。
クライアントは、DefaultHandlerのサブクラスでこれらのメソッドをオーバーライドしてデータを処理する。処理の中でデータをデータベースに保存したり、ストリームに書き出したりすることもある。
XSLTインタフェース
XSLTは、XML文書を別の形式のデータに変換できる。
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.