javax.xml
前回に続き、今回は XML 文書のフォーマットの「出力編」。 SAX, DOM はナシ。 代わりに javax.xml.transform パッケージ (TrAX API) を扱います。各 API での対象となるクラスは以下の表の通り: API version クラス transform Java SE 6 (javax.xml.transf…
Java で XML 文書を扱う API がいろいろありますが、入出力の際に指定できるフォーマットが各 API でいろいろあるので、チョット整理しておきましょう。 JDOM の Format や dom4j の OutputFormat は次回。今回は読み込みの際に処理を行う「入力編」。 各 AP…
SAX API, DOM API, javax.xml.** パッケージ内には、XML 文書を読み込む際に読み込み位置を取得するためのインターフェースが幾つか定義されています。 今回は、それらを簡単に整理しておきます。位置を指定するインターフェース 読み込み位置を取得するため…
今回は名前空間を使用する場合の要素と属性を書き出す XMLStreamWriter#writeXxxx() メソッドを見ていきましょう。定義されているメソッドは、要素の開始、空要素、属性の書き出しメソッドです: void writeStartElement(String uri, String localName); voi…
前回に引き続き、今回も XMLStreamWriter インターフェースに定義されている writeXxxx() メソッドを見ていきましょう。 今回見ていくのは名前空間を使用しない場合の「要素」と「属性」です。以下に書かれているサンプルでは、「writer」はXMLStreamWriter …
今回は XMLStreamWriter インターフェースに定義されている writeXxxx() メソッドを見ていきます(一部次回)。 これらは各種 XML ノードを書き出しますが、大まかに分類すると次のようになります: 文書 writeStartDocument() writeEndDocument() 要素(次…
XMLStreamWriter は XMLEvent を用いずに XML ノードを外部へ出力するクラスです。 XMLEventWriter の使用手順は以下の通り: XMLStreamWriter のインスタンスを取得する XMLStreamWriter のインスタンスを用いて XML ノードを書き出す XMLStreamWriter をフ…
XMLEventWriter は XMLEvent を外部へ出力するクラスです。 XMLEventWriter の使用方法は以下のような手順で行います: XMLEventWriter のインスタンスを取得する XMLEventWriter のインスタンスを用いて XML イベントを書き出す XMLEventWriter をフラッシ…
前回までは、DOM や dom4j のようにメモリ上に XML ツリーを展開して扱う API のための NamespaceContext 実装を考えていました(一覧)。今回はそれを利用して、StAX のような API で用いることのできる NamespaceContext 実装を考えてみます。方針 実装方…
今回は javax.xml.stream.XMLInputFactory に設定できるプロパティを見ていきます。 プロパティの設定を変更することで、XML 文書の解析方法を変えることが出来ます。解析方法の設定を、実際に解析を行う XMLEventReader や XMLStreamReader ではなく、それ…
XMLEventReader の時と同様、StAX 解析のサンプルとして XMLStreamReader を用いて SAX 解析を行うクラス StaxSAXParser を実装してみましょう。 ここでは、XML イベントとして扱うのは org.xml.sax.ContentHandler が扱うもの*1とします(org.xml.sax.ext.L…
XMLStreamReader も、XMLEventReader 同様 XML 文書を解析するクラスですが、解析中に XML イベントオブジェクトを生成しないため素早く動作します。 XMLSteamReader を用いた XML 文書の解析の手順は、XMLEventReader と(解析処理の実装以外は)ほとんど同…
今回は前回までで考えた AbstractNamespaceContext の実際の使い方を考えてみます(一覧)。ここでは dom4j に定義されている、XML ツリーの要素を表すインターフェース org.dom4j.Element から、NamespaceContext を取得できるようにしてみましょう*1。ただ…
前回までで考えた、javax.xml.namespace.NamespaceContext の実装をサポートする抽象クラスは、結局、次のようになります(一覧): import java.util.Collections; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import…
前回までで javax.xml.namespace.NamespaceContext が実装すべきメソッド getNamespaceURI() getPrefixes() getPrefix() を一通り見ました。 今回は、それらのメソッドに空文字列 ("") を渡したときの挙動を見ていきます(一覧)。以下で見る挙動は、API ド…
今回は NamespaceContext#getPrefix() メソッド(一覧)。NamespaceContext#getPrefix(String) の返り値 Java SE 6 の API ドキュメントを見ると、返り値は以下のように定義されています: 引数の名前空間 URI 返り値 http://www.w3.org/XML/1998/namespace …
今回は、指定された名前空間 URI から、それに対応する接頭辞の Iterator を返すメソッド NamespaceContext#getPrefixes(String) を考えます(一覧)。NamespaceContext#getPrefixes(String) の返り値 Java SE 6 の API ドキュメントを見ると、返り値は以下…
今回は、指定された接頭辞から、それに対応する名前空間 URI を返すメソッド NamespaceContext#getNamespaceURI(String) を考えます(一覧)。NamespaceContext#getNamespaceURI(String) の返り値 Java SE 6 の API ドキュメントを見ると、返り値は以下のよ…
javax.xml.namespace パッケージに定義されている NamespaceContext インターフェース(簡単にはこちらを参照)は、標準 API 内に実装クラスもファクトリ・クラスも提供されていません。 したがって、自分でインスタンスを作成したい場合には、自作クラスを…
StAX 解析のサンプルとして、XMLEventReader を用いて SAX 解析を行うクラス StaxSAXParser を実装してみましょう。 ただし、XML イベントとして扱うのは org.xml.sax.ContentHandler が扱うもの*1とします(org.xml.sax.ext.LexicalHandler が扱うイベント…
XMLEventReader は XML 文書を解析して XML イベントを返すクラスです。 XMLEventReader を用いた XML 文書の解析の手順は、概ね以下のようになります: XMLInputFactory のインスタンスを取得する (必要なら)XMLInputFactory の設定をする XMLEventReader…
前回に引き続き、今回も XML イベント。 今回は、javax.xml.stream.events.XMLEvent インターフェースに定義されているメソッドと、XML イベントの種類を見ていきます。XMLEvent インターフェースに定義されているメソッド XMLEvent インターフェースに定義…
今回は XML 文書を(イベント・ベースで)解析する際などに使用する「XML イベント」のサブタイプを見ていきます。XML イベントを表す型は javax.xml.stream.events.XMLEvent です。 全ての XML イベントはこのインターフェースを拡張しています。 具体的に…
StAX API は XML 文書の入出力を行うクラス群ですが、入出力それぞれに『ストリーム・ベース』と『イベント・ベース』の2種類のアプローチがあります。イベント・ベース SAX を説明したときに「SAX イベント」という言葉を(勝手に)使っていました。 これは…
今回から javax.xml.stream パッケージとそのサブパッケージに含まれるクラス群「StAX」*1を見ていきましょう(一覧)。 これは前回までに見てきた SAX や DOM のように XML 文書を解析するための API です(簡単な説明はこちら)。SAX や DOM との違いの1つ…
前回までの SAX API とはうって変わって、今回からは DOM API 。 SAX API のときとは違って、 org.w3c.dom パッケージ内のクラスには深入りしません(出てくるのは org.w3c.dom.Document だけの予定)(記事一覧)。org.w3c.dom.Document オブジェクトの取得…
今回は、前回作成したの2つのインターフェースの実装クラス JDefaultHandler, JAttributesImpl クラスを作成します。JDefaultHandler クラス JDefaultHandler は org.xml.sax.helpers.DefaultHandler を拡張して作成します。 各メソッドの実装の概要は以下の…
今回は、前回示したクラス群の中の2つのインターフェース JContentHandler, JAttributes を作成します。JContentHandler インターフェース JContentHandler は org.xml.sax.ContentHandler を拡張して作成します。 また、JContentHandler には、javax.xml.na…
今回は DocumentBuilderFactory に設定できる項目を見ていきます。 これら DocumentBuilderFactory の設定項目はそのインスタンスから生成する DocumentBuilder に受け継がれます。 SAXParserFactory, SAXParser の場合と同様に、DocumentBuilder に対しては…
org.xml.sax.ContentHandler で要素に対する SAX イベントを扱うとき(つまり startElement() や endElement() を実装するとき)、引数に3つも文字列が定義されているので少々扱いにくくなっています。 また、属性を表すインターフェース org.xml.sax.Attrib…