| MAP | SASAX ドキュメント > チュートリアル > SASAX による解析 > 単純要素 | << | >> | 
本節では、 テキストを持つ単純要素の解析例を用いて、 SASAX による XML 文書の解析方法を説明します。
XML Schema によるスキーマおよび文書例を "文書構造" に示します。.
XML Schema によるスキーマ:
<xs:schema 
  targetNamespace="http://www.lares.dti.ne.jp/~foozy/"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:local="http://www.lares.dti.ne.jp/~foozy/">
  <xs:simpleType name="int">
    <xs:restriction base="xs:integer"/>
  </xs:simpleType>
  <xs:element name="int" type="local:int"/>
</xs:schema>
例:
<foozy:int
 xmlns:foozy="http://www.lares.dti.ne.jp/~foozy/">
    12345678
</foozy:int>
対象文書が以下の特徴を持つことがわかります。
前述の文書を解析するためのオブジェクト群は、 "要素オブジェクト(群)の生成" に示すようにして生成されます。
String uri = "http://www.lares.dti.ne.jp/~foozy/"; IntElement intElement = new IntElement(null, uri, "int");
コンストラクタに対する "null" 引数は、 "intElement" が親要素を持たないルート要素である、ということを意味します。
ValueElement クラス
(ないし NumberElement クラス)
の派生クラスを用いることで、
他のデータ型を解析することが出来ます。
詳細は API ドキュメントを参照してください。
"Element" 実装クラスを用いて
XML 文書を解析するためには、
以下に示すように、
"ElementDrivenHandler" を用いて
(JAXP の)SAXParser に対して適合させる必要があります。
ElementDrivenHandler handler = new ElementDrivenHandler(intElement); // java.io.Reader である "reader" から // XML 文書を読み込みたい場合: handler.parse(reader); // java.lang.String である "document" から // XML 文書を読み込みたい場合: handler.parse(document);
両 ElementDrivenHandler#parse メソッドはその内部で、
SAXParserFactory から
SAXParser を取得し、
自分自身を指定して SAXParser#parse を起動します。
これにより、
Element で定義されたメソッドが、
対応する SAX イベントに応じて起動されます。
備考: 本チュートリアルでは、 説明単純化のためにメモリ/性能効率は無視しています。 効率的な使用方法に関しては API ドキュメントを参照してください。
ElementDrivenHandler#parse 起動後、
IntElement クラスの
getInteger メソッドを
"intElement" に対して起動することで、
整数値を得ることが出来ます。
getInteger メソッドの引数に関する詳細は、
"Custom element" ないし
API ドキュメントを参照してください。
チュートリアル本節におけるコードの完全なものは、
配布物の src/demo/sasax/src 配下にある
jp.ne.dti.lares.foozy.sasax.SimpleDemo です。
このクラスはバイナリ配布版中の demo.jar に含まれています。
本節におけるクラス図を以下に示します。
本節におけるオブジェクト図を以下に示します。
SAXParser、ElementDrivenHandler および Element 実装クラスにおける処理フローは以下のようになります。
加えてシーケンス図を以下に示します。
本チュートリアルでは、 クラスは全てクラス名のみで表記されています。 完全な名称は以下の通りです。
| 表記 | 完全名 | 
|---|---|
| Element | jp.ne.dti.lares.foozy.sasax.Element | 
| ElementDrivenHandler | jp.ne.dti.lares.foozy.sasax.ElementDrivenHandler | 
| IntElement | jp.ne.dti.lares.foozy.sasax.IntElement | 
| NumberElement | jp.ne.dti.lares.foozy.sasax.NumberElement | 
| ValueElement | jp.ne.dti.lares.foozy.sasax.ValueElement | 
| MAP | SASAX ドキュメント > チュートリアル > SASAX による解析 > 単純要素 | << | >> |