前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework 4.1

18.2. DOM ツリー

18.2.1. DOM ツリーの構築

W3C ( World Wide Web Consortium ) で定義される 12 種類のノードに対応する、以下のクラスを使って DOM ツリーを構築します。これらのクラスは SFXXMLNode クラスを継承します。

表 18.1. XML ノード クラス

クラス名 解説 ノード タイプ ( SFXXMLNode::NodeType )
SFXXMLNode 12 種類のノード クラスの基底クラスです。 -
SFXXMLElement Element ノードを表すクラスです。 ELEMENT_NODE
SFXXMLAttribute Attribute ノードを表すクラスです。 ATTRIBUTE_NODE
SFXXMLText Text ノードを表すクラスです。 TEXT_NODE
SFXXMLCDATASection CDATASection ノードを表すクラスです。 CDATA_SECTION_NODE
SFXXMLEntityReference Entity Reference ノードを表すクラスです。 ENTITY_REFERENCE_NODE
SFXXMLEntity Entity ノードを表すクラスです。 ENTITY_NODE
SFXXMLProcessingInstruction Processing Instruction ノードを表すクラスです。 PROCESSING_INSTRUCTION_NODE
SFXXMLComment Comment ノードを表すクラスです。 COMMENT_NODE
SFXXMLDocument Document ノードを表すクラスです。 DOCUMENT_NODE
SFXXMLDocumentType DocumentType ノードを表すクラスです。 DOCUMENT_TYPE_NODE
SFXXMLDocumentFragment DocumentFragment ノードを表すクラスです。 DOCUMENT_FRAGMENT_NODE
SFXXMLNotation Notation ノードを表すクラスです。 NOTATION_NODE

図 18.1. SFXXMLNode クラスの継承関係

SFXXMLNode クラスの継承関係

18.2.2. SFXXMLNode クラスの基本機能

SFXXMLNode クラスの基本機能として、以下の関数が用意されています。

表 18.2. DOM ツリーを操作するための関数

関数名 解説
GetFirstChild 最初の子ノードを取得します。
GetLastChild 最後の子ノードを取得します。
GetNextSibling 次の兄弟ノードを取得します。
GetPreviousSibling 前の兄弟ノードを取得します。
GetParentNode 親ノードを取得します。

表 18.3. DOM ツリーを構築するための関数

関数名 解説
AppendChild 子ノードの最後にノードを追加します。
RemoveChild 子孫ノードも含めて子ノードを削除します。
ReplaceChild 子ノードを置換します。
InsertBefore 指定したノードの前にノードを挿入します。
CloneNode ノードのコピーを作成します。

表 18.4. ノードの属性を設定・取得するための関数

関数名 解説
HasChildNodes 子ノードを持つかどうかを判定します。
GetChildNodes すべての子ノードの取得します。
GetNodeType ノード タイプを取得します。
GetNodeName ノード名を取得します。
SetNodeValue ノード内容を更新します。
GetText ノードのテキストを取得します。
SetText ノードにテキストを設定します。

表 18.5. ノードを比較するための関数

関数名 解説
IsSameNode 2 つのノードが同一であるかどうかを判定します。
EqualNode 2 つのノードが同等であるかどうかを判定します。

18.2.3. XML 文書の処理

XML パーサーは、文法チェック ( DTD または XMLSchema ) された XML 文書を、ツリー構造 ( DOM ツリー ) としてメモリ上に展開して、アプリに渡します。

図 18.2. XML 文書の処理フロー

XML 文書の処理フロー

実際のアプリでは、DOM パーサー ( SFXXMLDOMParser / SFXXSDDOMParser ) を呼んで XML 文書を解析し、DOM ツリー ( SFXXMLDocument ) を取得します。

図 18.3. シーケンス図

シーケンス図
[Note] SFXXMLScanner

SFXXMLScanner クラスは、 SophiaFramework で内部的に使われるクラスです。

図 18.4. SFXXMLDocument

SFXXMLDocument

SFXXMLDocument クラスの機能

  1. DOM ツリーを構築できます。
  2. DOM ツリーを保存できます。
  3. DOM ツリーを操作できます。

※ XML パーサーでは、DOM ツリー ( SFXXMLDocument ) が最も重要な役割を果たします。