![]() ![]() ![]()
|
BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0 |
#include <SFXXMLSAXParser.hpp>
class SFXXMLSAXParser : public static_exception< SFCError >;
SFMTYPEDEFCLASS(SFXXMLSAXParser)


SAX パーサー (SFXXMLSAXParser) では、XML 文書を先頭から順に読み込み、要素や CDATA セクションの開始や終了を検出する度にイベントを発生します。それらのイベントは、SFXXMLDefaultHandler クラスを継承するクラスの然るべきハンドラ関数に通知されて処理されます。
イベントの順序は、XML 文書に含まれる情報の内容と一致します。たとえば、ある要素の内容 ( 文字データ、処理命令、サブ要素など ) は、StartElement イベントと EndElement イベントの間に順番に並べられます。
SAX パーサー (SFXXMLSAXParser) を利用するには、SFXXMLDefaultHandler クラスを継承するクラスを実装して、 SFXXMLSAXParser::SetDefaultHandler 関数を使って SAX パーサー (SFXXMLSAXParser) に登録する必要があります。
SAX パーサー(SFXXMLSAXParser) には、DOM パーサー(SFXXMLDOMParser) よりも少ないメモリで速く解析できるというメリットがあります。
![]() |
SAX ( Simple API for XML ) |
|---|---|
Simple API for XML にて SAX に関する最新情報を入手できます。 | |
例 779. SAX パーサー を使って XML 文書を解析する方法
// SAX パーサーのハンドラ クラス class MyXMLHandler : public SFXXMLDefaultHandler { public: // 各ハンドラの定義 ... }; SFCError error; // エラー値 SFXXMLSAXParser parser; // SAX パーサー MyXMLHandler handler; // SAX パーサーのハンドラ // SAX パーサーにハンドラを設定する parser.SetDefaultHandler(&handler); // SAX パーサーで XML 文書を解析する error = parser.Parse(SFXPath("/file.xml"));
| コンストラクタ/デストラクタ |
|---|
|
SFXXMLSAXParser( Void ) SFXXMLSAXParser クラスのコンストラクタです。
|
|
~SFXXMLSAXParser( Void ) SFXXMLSAXParser クラスのデストラクタです。
|
| パブリック関数 | |
|---|---|
| Bool |
GetDoIndent( Void ) XML 文書を解析するとき、文書をインデントするかどうかを取得します。
|
| Bool |
GetDoNamespaces( Void ) XML 文書を解析するとき、名前空間を処理するかどうかを取得します。
|
| Bool |
GetDoSchema( Void ) スキーマを処理するかどうかを取得します。
|
| Bool |
GetFeature(
SFXAnsiStringConstRef name
) 指定した機能の値を取得します。
|
| Bool |
GetIgnoreAnnotations( Void ) スキーマ付き XML 文書の Annotation 要素を無効にするかどうかを取得します。
|
| Bool |
GetLoadExternalDTD( Void ) DTD 付き XML 文書に対し、拡張する DTD ファイルをロードするかどうかを取得します。
|
| VoidPtr |
GetProperty(
SFXAnsiStringConstRef name
) 指定したプロパティの値を取得します。
|
| Bool |
GetStandalone( Void ) XML 文書の Standalone 宣言を取得します。
|
| Bool |
GetValidationDTD( Void ) XML 文書を DTD で検証するかどうかを取得します。
|
| Bool |
GetValidationSchema( Void ) XML 文書をスキーマで検証するかどうかを取得します。
|
| SFCError |
Parse(
SFBFileSmpConstRef source
) Parse( SFXStreamReaderConstRef source ) Parse( SFXPathConstRef source ) Parse( SFXAnsiStringConstRef source ) XML 文書ファイルを読み込み、SAX パーサーを使って解析します。
|
| Void |
Reset( Void ) すべての内部変数をリセットします。
|
| Void |
SetDefaultHandler(
SFXXMLDefaultHandlerPtr handler
) イベントを通知するハンドラを設定します。
|
| Void |
SetDoIndent(
BoolConst state
) XML 文書を解析するとき、文書をインデントするかどうかを設定します。
|
| Void |
SetDoNamespaces(
BoolConst state
) XML 文書を解析するとき、名前空間を処理するかどうかを設定します。
|
| Void |
SetDoSchema(
BoolConst state
) スキーマを処理するかどうかを設定します。
|
| Void |
SetFeature(
SFXAnsiStringConstRef name
, BoolConst value
) 指定した機能の値を設定します。
|
| Void |
SetGrammar(
SFXXMLGrammar::GrammarType grammar
) パーサーが使う文法を設定します。
|
| Void |
SetIgnoreAnnotations(
BoolConst state
) Annotation 要素を無効にするかどうかを設定します
|
| Void |
SetLoadExternalDTD(
BoolConst state
) DTD 付き XML 文書に対し、外部の DTD ファイルをロードするかどうかを設定します。
|
| Void |
SetProperty(
SFXAnsiStringConstRef name
, VoidConstPtr value
) 指定したプロパティの値を設定します。
|
| Void |
SetSchemaLocation(
SFXAnsiStringConstRef name
) スキーマ付き XML 文書の XSD ファイルを設定します。
|
| Void |
SetValidationDTD(
BoolConst state
) XML 文書を DTD で検証するかどうかを設定します。
|
| Void |
SetValidationSchema(
BoolConst state
) XML 文書をスキーマで検証するかどうかを設定します。
|
[ public, explicit ] SFXXMLSAXParser(Void);
[ public ] ~SFXXMLSAXParser(Void);
[ public, const ] Bool GetDoIndent(Void);
[ public, const ] Bool GetDoNamespaces(Void);
[ public, const ] Bool GetDoSchema(Void);
[ public, const ] Bool GetFeature( SFXAnsiStringConstRef name // 機能名( 完全修飾 URI ) );
サポートされる機能( Feature ) は以下の 3 つです。
![]() |
機能( Feature ) について |
|---|---|
|
SAX : Features and Properties Apache XML : Parser Features | |
名前空間を処理するように設定します。
SFXXMLSAXParser saxparser; // SAX パーサー SFXAnsiStringConstRef saxnamespace("http://xml.org/sax/features/namespaces"); // 機能名( 完全修飾 URI ) // 名前空間を処理する設定になっているかどうか if(!saxparser.GetFeature(saxnamespace) { saxparser.SetFeature(saxnamespace, true ); // 名前空間を処理する }
[ public, const ] Bool GetIgnoreAnnotations(Void);
[ public, const ] Bool GetLoadExternalDTD(Void);
[ public, const ] VoidPtr GetProperty( SFXAnsiStringConstRef name // プロパティ名 );
サポートされるプロパティ( Property )は以下の 1 つです。
![]() |
プロパティ( Property ) について |
|---|---|
SAX : Features and Properties | |
// MySAXHandler1: SAX パーサーのハンドラ クラス class MySAXHandler1 : public SFXXMLDefaultHandler { public: // 各ハンドラの定義 ... }; // MySAXHandler2: SAX パーサーのハンドラ クラス class MySAXHandler2 : public SFXXMLDefaultHandler { public: // 各ハンドラの定義 ... }; SFXXMLSAXParser saxparser; // SAX パーサー MySAXHandler1 saxhandler1; // SAX パーサーのハンドラ MySAXHandler2 saxhandler2; // SAX パーサーのハンドラ SFXAnsiStringConstRef property("default-handler"); VoidPtr voidptr; // saxhandler1 を SAX パーサーのハンドラに設定する saxparser.SetDefaultHandler(&saxhandler1); saxparser.Parse("file.xml"); // saxhandler1 で XML 文書を解析する voidptr = saxparser.GetProperty(property); // プロパティに設定されている SAX パーサーのハンドラ saxhandler1 を取得する if( voidptr == &saxhandler1 ){ saxparser.SetProperty(property, &saxhandler2); // saxhandler2 を SAX パーサーのハンドラに設定する } saxparser.Parse("file.xml"); // saxhandler2 で XML 文書を解析する
[ public, const ] Bool GetStandalone(Void);
[ public, const ] Bool GetValidationDTD(Void);
[ public, const ] Bool GetValidationSchema(Void);
[ public ] SFCError Parse( SFBFileSmpConstRef source // 解析する XML ファイル );
[ public ] SFCError Parse( SFXAnsiStringConstRef source // 解析する XML 文書 );
[ public ] SFCError Parse( SFXPathConstRef source // 解析する XML ファイル パス );
[ public ] SFCError Parse( SFXStreamReaderConstRef source // 入力ストリーム );
XML 文書の解析結果のエラーコードは以下の通りです。
DTD 付き XML 文書の解析結果のエラーコードは以下の通りです。
スキーマ付き XML 文書の解析結果のエラーコードは以下の通りです。
詳細情報: SFCErrorEnum
SFXXMLSAXParser::Parse 関数は、XML 文書ファイルを読み込み、解析する関数です。引数には入力ストリーム、ファイル パス、文字列を渡します。 ファイル パスのデフォルト ディレクトリはアプリケーションのホーム フォルダになります。
[ public ] Void Reset(Void);
[ public ] Void SetDefaultHandler( SFXXMLDefaultHandlerPtr handler // ハンドラ );
SFXXMLDefaultHandler クラスを継承して作成したハンドラを設定します。
[ public ] Void SetFeature( SFXAnsiStringConstRef name // 機能名( 完全修飾 URI ) BoolConst value // 機能の値 );
サポートされる機能( Feature ) は以下の 3 つです。
![]() |
機能( Feature ) について |
|---|---|
|
SAX : Features and Properties Apache XML : Parser Features | |
XML 文書をスキーマで検証するように設定します。
SFXXMLSAXParser saxparser; // SAX パーサー SFXAnsiStringConstRef saxnamespace("http://xml.org/sax/features/validation"); // 機能名( 完全修飾 URI ) if(!saxparser.GetFeature(saxnamespace) { // XML 文書をスキーマで検証する設定になっているとき saxparser.SetFeature(saxnamespace, true ); // XML 文書をスキーマで検証する }
[ public ] Void SetGrammar( SFXXMLGrammar::GrammarType grammar // 文法タイプ );
[ public ] Void SetProperty( SFXAnsiStringConstRef name // プロパティ名 VoidConstPtr value // プロパティの値 );
サポートされるプロパティ( Property )は以下の 1 つです。
![]() |
プロパティ( Property ) について |
|---|---|
SAX : Features and Properties | |
// MySAXHandler1: SAX パーサーのハンドラ クラス class MySAXHandler1 : public SFXXMLDefaultHandler { public: // 各ハンドラの定義 ... }; // MySAXHandler2: SAX パーサーのハンドラ クラス class MySAXHandler2 : public SFXXMLDefaultHandler { public: // 各ハンドラの定義 ... }; SFXXMLSAXParser saxparser; // SAX パーサー MySAXHandler1 saxhandler1; // SAX パーサーのハンドラ MySAXHandler2 saxhandler2; // SAX パーサーのハンドラ SFXAnsiStringConstRef property("default-handler"); VoidPtr voidptr; // saxhandler1 を SAX パーサーのハンドラに設定する saxparser.SetDefaultHandler(&saxhandler1); saxparser.Parse("file.xml"); // saxhandler1 で XML 文書を解析する voidptr = saxparser.GetProperty(property); // プロパティに設定されている SAX パーサーのハンドラ saxhandler1 を取得する if( voidptr == &saxhandler1 ){ saxparser.SetProperty(property, &saxhandler2); // saxhandler2 を SAX パーサーのハンドラに設定する } saxparser.Parse("file.xml"); // saxhandler2 で XML 文書を解析する
[ public ] Void SetSchemaLocation( SFXAnsiStringConstRef name // ローカル XSD ファイル );
|
Copyright (C) 2002 - 2008 Sophia Cradle Incorporated All Rights Reserved. |
![]() ![]() ![]()
|