倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

javax.xml

QName を接頭辞付きのタグ名に変換する

以前の記事で javax.xml.namespace.QName に定義されているメソッドを紹介しました。 しかし、このクラスには、それが表す QName に対応する「接頭辞付の名前文字列」を返すメソッドが定義されていないようなので、それを返すユーティリティ・メソッドを作成…

org.xml.sax.ext.LexicalHandler

今回は、前回の ContentHandler に続き、XML 文書内のノードを扱うインターフェース org.xml.sax.ext.LexicalHandler を見ていきます(記事一覧)。org.xml.sax.ext.LexicalHandler インターフェース LexicalHandler は ContentHandler と違って、通知されて…

org.xml.sax.ContentHandler, org.xml.sax.helpers.DefaultHandler

前回あたりから既に javax.xml.parsers パッケージから離れてますが、気にせずいきましょう(記事一覧)。org.xml.sax.ContentHandler インターフェース SAX イベントを扱うハンドラの中で必須のインターフェース、org.xml.sax.ContentHandler に定義されて…

SAX API で org.dom4j.Document を構築するサンプル

前回までで紹介した SAX API を使用するサンプルとして、SAX 解析によって org.dom4j.Document のインスタンスを構築するクラスを作成してみます*1(一覧)。クラス定義 作成するクラスを SimpleSAXContentHandler とします。 SAXParser を用いて解析を行う…

org.xml.sax.ErrorHandler

今回は org.xml.sax.ErrorHandler インターフェース(記事一覧)。org.xml.sax.ErrorHandler インターフェース ErrorHandler は望まれない事態が起こったときに呼ばれるメソッドを定義します: public interface ErrorHandler{ void warning(SAXParseExcepti…

SAX イベント・ハンドラあれこれ

前回説明した SAXParser#parse() メソッドによって XML 文書を解析すると、文書中の要素やテキストに応じて SAX イベント*1が発生します。 予め処理を実装した「ハンドラ」オブジェクトを SAXParser に設定することで、SAX イベントの種類に応じた処理を実行…

SAXParser#parse() メソッドと org.xml.sax.InputSource クラス

前回、SAXParser オブジェクトの取得方法を見ました(記事一覧)。 今回は SAXParser を用いて SAX 解析を行う方法を見ていきます。SAXParser#parse() メソッド SAX 解析を行うには SAXParser#parse() メソッドを用います。 parse() メソッドは、次の5種類が…

SAXParserFactory, SAXParser

javax.xml.parsers パッケージ内のクラスとそれに関連するクラスを何回かにわたって見ていきます(記事一覧)。 今回は SAX 関連のクラス SAXParserFactory と SAXParser です。SAXParser オブジェクトの取得方法 SAX による解析を行うには SAXParser オブジ…

ServiceLoader による Java SE 6 での RELAX NG 妥当性検証

以前の記事で、Java SE 6 で javax.xml.validation パッケージ内のクラスを用いて RELAX NG による妥当性検証を行う方法を見ました(一覧)。 今回は同様のことを java.util.ServiceLoader クラスを用いて 行う方法を見ていきます。 今回の方法を用いると、…

Java SE 6 で RELAX NG での妥当性検証をする場合の注意

Java SE 6 での RELAX NG スキーマによる妥当性検証 以前の記事で RELAX NG を用いた妥当性検証の実行方法を見ました。 それには、以下のようにして SchemaFactory オブジェクトを取得する必要がありました: SchemaFactory factory = SchemaFactory.newInst…

javax.xml.validation で RELAX NG を使うための POM プロジェクト

前回、Maven2 プロジェクト内で RELAX NG による妥当性検証を行うために必要なライブラリの設定の仕方をみました。ただし、それらを毎回 POM ファイルに書くのは面倒なので、それらの依存性を別の POM プロジェクトに書いて、それを再利用できる用にしましょ…

javax.xml.validation で RELAX NG を使う in Maven2 プロジェクト

RELAX NG を用いて妥当性検証を行うには、幾つかのライブラリを CLASSPATH に含める必要がありました。 必要なのは msv (multi schema validator) とその関連ライブラリ msv isorelax relaxngDatatype xsdlib それに加えて、msv と javax.xml.validation パ…

javax.xml.validation で RELAX NG を使う

前回は W3C XML Schema を使って XML 文書の妥当性検証を行う方法を見ました。 ただし、 javax.xml.validation パッケージに定義されてあるクラス群は、スキーマ言語によらない妥当性検証の方法を提供することができます。 今回はそれなりに用いられるスキー…

Schema オブジェクトの取得

javax.xml.validation パッケージ内のクラスは、XML の妥当性検証を行うためのクラス群が定義されています。 妥当性検証に用いることができるスキーマ言語は、デフォルトでは W3C XML Schema のみです(Java SE 6 現在)。妥当性検証を行う方法には、以下の…

javax.xml.validation で妥当性検証の実行

前回は、javax.xml.validation.Schema オブジェクトの取得方法を見ました。 今回は、それを使って妥当性検証を実行する方法を見てみましょう。 妥当性検証の実行方法には以下の様なものがあるのでした: SAXParser, DocumentBuilder の処理時に妥当性検証を…

QName

javax.xml.namespace パッケージでは、XML の名前空間に関連するインターフェース、クラスが定義されています(javax.xml.namespace パッケージのインターフェース、クラス関連の記事一覧)。 Java SE 6 では インターフェース NamespaceContext クラス QNam…

NamespaceContext

javax.xml.namespace.NamespaceContext インターフェース NamespaceContenxt は、簡単に言えば、接頭辞と名前空間 URI のマップです。 接頭辞をキーにして名前空間 URI を取得したり、その逆をしたりできます。ただし、1つの名前空間 URI に複数の接頭辞が関…

javax.xml パッケージ

今回は javax.xml パッケージ内のクラス「javax.xml.XMLConstants」 に定義されている静的フィールドを解読。次の4つに分けて見ていきます: 名前空間 URI 名前空間接頭辞 属性 フィーチャー 名前空間 URI 名前が「_NS_URI」で終わるフィールドです。 「W3C_…