• 検索結果がありません。

コンテンツの読み取り

ドキュメント内 Caché での XML の使用法 (ページ 38-42)

%XML.TextReaderクラスによって、ユーザはドキュメント・モデル内でノードをナビゲートできます。

ノードからノードへの移動に応じて、%XML.TextReaderオブジェクトの各種プロパティは、現在のノー ドに対応する値を取得します。

XML ドキュメントでは、前方への移動しか行うことができず、前に読んだノードに戻ることはできませ ん。

%XML.TextReader クラス

最初に%XML.TextReaderオブジェクトを生成するとき、オブジェクトにはその時点でノードはありま せん。%XML.TextReaderオブジェクトのプロパティが値を取得する前に、(以下で説明するメソッドの 1 つを使用して) 前方のノードに進む必要があります。

6.4.1 次のノードの読み取り

ドキュメント内の次のノードに進むには、Read メソッドを使用します。

While (reader.Read()) { }

Read メソッドは、前方のノードが存在しなくなるまで、真の値を返します。上記のループは、ドキュメ ントの最後に到達するまで実行を継続します。

6.4.2 特定の要素の検索

ReadStartElement メソッドを使用して、ドキュメント内の特定の要素の、次の場所に移動できます。

6.4.3 属性値の読み取り

要素に対する属性名と属性値を検索するには、以下の手順を実行します。

1. 要素ノードに移動します (例えば、Read メソッドを使用します)。

2. MoveToAttributeIndex メソッドでインデックス (要素内の属性の位置) を指定するか、

MoveToAttributeName メソッドで名前を指定して、特定の属性に移動します。

3. %XML.TextReaderオブジェクトのプロパティを使用して、属性の情報を取得します。

4. 現在の要素に対する属性を終了したら、Read などの検索メソッドを実行することで、ドキュメント 内の次の要素に移動できます。また、MoveToElement メソッドを実行して、現在の属性を含む 要素に戻ることもできます。

例えば、以下のコードは、インデックス番号によって、現在のノードに対するすべての属性をリストに します。

If (reader.NodeType = "element") { // list attributes for this node For a = 1:1:reader.AttributeCount { Do reader.MoveToAttributeIndex(a)

Write reader.LocalName," = ",reader.Value,!

} }

以下のコードは、現在のノードに対するcolor属性の値を検索します。

コンテンツの読み取り

If (reader.NodeType = "element") {

// find color attribute for this node If (reader.MoveToAttributeName("color")) { Write "color = ",reader.Value,!

} }

%XML.TextReader クラス

7

SAX インタフェースの使用法

XML オブジェクトのカスタム・インポート・マッピングを作成するには、Caché SAX インタフェースを 使用します。SAX (Simple API for XML) は、イベント駆動型の XML パーサーです。SAX を使用し て、XML ファイルを読み、ファイル内の要素でメソッドを実行できます。Caché には、SAX コンテン ツ・ハンドラ、%XML.SAX.ContentHandlerクラスが備わっています。カスタム XML インポートと処理 メカニズムを作成するには、%XML.SAX.ContentHandlerのサブクラスを生成し、その新規のクラスで 既定のコンテンツ・ハンドラのメソッドをオーバーライドして、必要なアクションを実行します。

以下の図は、この操作の詳細です。

Caché SAX インタフェース

カスタム・インポート・メカニズムを作成し、それを使用するプロセスは以下の通りです。

1. %XML.SAX.ContentHandlerから派生するクラスを生成します。

2. オーバーライドするメソッドを、そのクラスに追加します。

3. %XML.SAX.Parserクラスの ParseFile メソッドを使用して、外部ファイルを読み込むクラス・メソッ ドをそのクラスに追加します。

4. そのクラス・メソッドを実行し、解析するファイルにそのメソッドを渡します。

ファイルの解析時、オーバーライドされたメソッドは定義されたアクションを実行し、コンテンツは適切 に処理されます。

ドキュメント内 Caché での XML の使用法 (ページ 38-42)

関連したドキュメント