SophiaFramework UNIVERSE 5.3 |
#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 に関する最新情報を入手できます。 |
例 861. 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 ) インデント処理するかどうかのフラグ値(インデントフラグ値)を取得します。
|
Bool |
GetDoNamespaces( Void ) 名前空間を処理するかどうかのフラグ値(名前空間処理フラグ値)を取得します。
|
Bool |
GetDoSchema( Void ) XML 文書のスキーマを処理するかどうかのフラグ値(スキーマ処理フラグ値)を取得します。
|
Bool |
GetFeature(
SFXAnsiStringConstRef name
) 指定された機能(Feature)の値を取得します。
|
Bool |
GetIgnoreAnnotations( Void ) 【無効】XML スキーマの Annotation 要素の検証を無効にするかどうかのフラグ値(Annotation 要素検証無効フラグ値)を取得します。
|
Bool |
GetLoadExternalDTD( Void ) 外部 DTD ファイルをロードするかどうかのフラグ値(外部 DTD 読み込みフラグ値)を取得します。
|
VoidPtr |
GetProperty(
SFXAnsiStringConstRef name
) 指定されたプロパティ(Property)の値を取得します。
|
Bool |
GetStandalone( Void ) XML 文書の Standalone 宣言の内容を取得します。
|
Bool |
GetValidationDTD( Void ) XML 文書を DTD で検証するかどうかのフラグ値(DTD 検証フラグ値)を取得します。
|
Bool |
GetValidationSchema( Void ) XML 文書をスキーマで検証するかどうかのフラグ値(スキーマ検証フラグ値)を取得します。
|
SFCError |
Parse(
SFBFileSmpConstRef source
) XML 文書ファイルを読み込み、SAX パーサーを使用して解析します。
|
SFCError |
Parse(
SFXAnsiStringConstRef source
) XML 文書ファイルを読み込み、SAX パーサーを使用して解析します。
|
SFCError |
Parse(
SFXPathConstRef source
) XML 文書ファイルを読み込み、SAX パーサーを使用して解析します。
|
SFCError |
Parse(
SFXStreamReaderConstRef source
) XML 文書ファイルを読み込み、SAX パーサーを使用して解析します。
|
Void |
Reset( Void ) すべての内部変数をリセットします。
|
Void |
SetDefaultHandler(
SFXXMLDefaultHandlerPtr handler
) イベントを通知するハンドラを設定します。
|
Void |
SetDoIndent(
BoolConst state
) インデント処理するかどうかのフラグ値(インデント処理フラグ値)を設定します。
|
Void |
SetDoNamespaces(
BoolConst state
) 名前空間を処理するかどうかのフラグ値(名前空間処理フラグ値)を設定します。
|
Void |
SetDoSchema(
BoolConst state
) XML 文書のスキーマを処理するかどうかのフラグ値(スキーマ処理フラグ値)を設定します。
|
Void |
SetFeature(
SFXAnsiStringConstRef name
, BoolConst value
) 指定された機能(Feature)の値を設定します。
|
Void |
SetGrammar(
SFXXMLGrammar::GrammarType grammar
) XML ドキュメントの記述内容を規定する文法(言語)を設定します。
|
Void |
SetIgnoreAnnotations(
BoolConst state
) 【無効】XML スキーマの Annotation 要素の検証を無効にするかどうかのフラグ値(Annotation 要素検証無効フラグ値)を設定します。
|
Void |
SetLoadExternalDTD(
BoolConst state
) 外部 DTD ファイルをロードするかどうかのフラグ値(外部 DTD 読み込みフラグ値)を設定します。
|
Void |
SetProperty(
SFXAnsiStringConstRef name
, VoidConstPtr value
) 指定されたプロパティ(Property)の値を設定します。
|
Void |
SetSchemaLocation(
SFXAnsiStringConstRef name
) XML 文書を検証するための XSD ファイルを設定します。
|
Void |
SetValidationDTD(
BoolConst state
) XML 文書を DTD で検証するかどうかのフラグ値(DTD 検証フラグ値)を設定します。
|
Void |
SetValidationSchema(
BoolConst state
) XML 文書をスキーマで検証するかどうかのフラグ値(スキーマ検証フラグ値)を設定します。
|
[ public, explicit ] SFXXMLSAXParser(Void);
このコンストラクタは、この XML パーサーの各種初期設定を行います。
[ public ] ~SFXXMLSAXParser(Void);
このデストラクタは、SFXXMLSAXParser::Reset 関数を呼び出します。
[ public, const ] Bool GetDoIndent(Void);
インデント処理フラグ値
この関数は、インデント処理するかどうかのフラグ値(インデント処理フラグ値)を取得します。
注意 | |
---|---|
このフラグを ON(true)に設定すると、 XML 文書を処理するときに、 XML プロローグ、ルート要素、コメントと CDATA セクションの内部を除く各行について、 先頭タグの前と前行の末尾の空白部分をテキストを読み込むと、 インデント処理用に IgnorableWhitespace() ハンドラが起動されます。 |
[ public, const ] Bool GetDoNamespaces(Void);
名前空間処理フラグ値
この関数は、名前空間を処理するかどうかのフラグ値(名前空間処理フラグ値)を取得します。
注意 | |
---|---|
このフラグを ON(true)に設定すると、 XML 文書を解析するときに、 要素のハンドラに要素やその属性の名前空間 URI も渡されます。 |
[ public, const ] Bool GetDoSchema(Void);
スキーマ処理フラグ値
この関数は、この XML パーサーが XML 文書のスキーマを処理するかどうかのフラグ値(スキーマ処理フラグ値)を取得します。
[ public, const ] Bool GetFeature( SFXAnsiStringConstRef name // 機能名(完全修飾 URI) );
指定された機能(Feature)の値
この関数は、指定された機能(Feature)の値を取得します。
サポートされる機能(Feature)は以下の 3 つです。
機能( Feature ) | |
---|---|
SAX : Features and Properties Apache XML : Parser Features |
XML 文書をスキーマで検証するように設定します。
SFXXMLSAXParser saxparser; // SAX パーサー SFXAnsiStringConstRef schema_validation("http://xml.org/sax/features/validation"); // 機能名( 完全修飾 URI ) if(!saxparser.GetFeature(schema_validation) { // XML 文書をスキーマで検証する設定になっていないとき // XML 文書をスキーマで検証する saxparser.SetFeature(schema_validation, true ); }
[ public, const ] Bool GetIgnoreAnnotations(Void);
Annotation 要素検証無効フラグ値
この関数は、XML スキーマの Annotation 要素の検証を無効にするかどうかのフラグ値(Annotation 要素検証無効フラグ値)を取得します。
注意 | |
---|---|
現バージョンでは、Annotation 要素検証無効フラグ値を OFF にしても検証は行われません(このフラグは無効です)。 |
[ public, const ] Bool GetLoadExternalDTD(Void);
外部 DTD 読み込みフラグ値
この関数は、この XML パーサーが XML 文書内に指定された、 外部 DTD ファイルをロードするかどうかのフラグ値(外部 DTD 読み込みフラグ値)を取得します。
[ public, const ] VoidPtr GetProperty( SFXAnsiStringConstRef name // プロパティ名 );
指定されたプロパティ(Property)の値
この関数は、指定されたプロパティ(Property)の値を取得します。
サポートされるプロパティ(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);
XML 文書の Standalone 宣言の内容
この関数は、XML 文書の Standalone 宣言の内容を取得します。
[ public, const ] Bool GetValidationDTD(Void);
DTD 検証フラグ値
この関数は、この XML パーサーが XML 文書を DTD で検証するかどうかのフラグ値(DTD 検証フラグ値)を取得します。
[ public, const ] Bool GetValidationSchema(Void);
スキーマ検証フラグ値
この関数は、この XML パーサーが XML 文書をスキーマで検証するかどうかのフラグ値(スキーマ検証フラグ値)を取得します。
[ public ] SFCError Parse( SFBFileSmpConstRef source // 解析する XML ファイル );
[ public ] SFCError Parse( SFXAnsiStringConstRef source // 解析する XML 文書 );
[ public ] SFCError Parse( SFXPathConstRef source // 解析する XML ファイルパス );
[ public ] SFCError Parse( SFXStreamReaderConstRef source // ストリーム );
XML 文書の解析後、 static_exception::static_catch 関数により取得できる、その他のエラー値は以下の通りです。
DTD 付き XML 文書の解析結果のエラーコードは以下の通りです。
スキーマ付き XML 文書の解析結果のエラーコードは以下の通りです。
詳細情報: SFCErrorEnum
この関数は、XML 文書(ファイル、ストリーム、文字列)を読み込み、SAX 方式で解析します。
引数にはストリーム、ファイルパス、文字列を渡します。 ファイルパスのデフォルト ディレクトリはアプリのホームフォルダになります。
注意 | |
---|---|
BREW の制約により、ファイルの絶対パスは 64 文字より小さくなければいけません。 また、携帯端末内のローカルファイルを指定する必要があります(サーバーのファイルは指定できません)。 |
[ public ] Void Reset(Void);
この関数は、この XML パーサーが使用している、 すべての内部変数をリセットします。
[ public ] Void SetDefaultHandler( SFXXMLDefaultHandlerPtr handler // ハンドラ );
この関数は、この XML パーサーが解析時しているときに発生するイベントを通知するハンドラを設定します。
SFXXMLDefaultHandler クラスを継承して作成したハンドラクラスを設定します。
この関数は、インデント処理するかどうかのフラグ値(インデント処理フラグ値)を設定します。
デフォルト値: OFF(false)[デフォルトの設定では、インデント処理されません。]
注意 | |
---|---|
このフラグを ON(true)に設定すると、 XML 文書を処理するときに、 XML プロローグ、ルート要素、コメントと CDATA セクションの内部を除く各行について、 先頭タグの前と前行の末尾の空白部分をテキストとするインデント処理用に IgnorableWhitespace() ハンドラが起動されます。 |
この関数は、名前空間を処理するかどうかのフラグ値(名前空間処理フラグ値)を設定します。
デフォルト値: OFF(false)[デフォルトの設定では、名前空間は処理されません。]
注意 | |
---|---|
SFXXMLSAXParser::SetDoSchema 関数によりスキーマ処理フラグを ON に設定する場合は、 この関数を呼び出して名前空間処理フラグも ON にする必要があります。 |
注意 | |
---|---|
このフラグを ON(true)に設定すると、 要素を読み込んだときに起動されるハンドラに要素やその属性の名前空間 URI も渡されます。 |
この関数は、この XML パーサーが XML 文書のスキーマを処理するかどうかのフラグ値(スキーマ処理フラグ値)を設定します。
デフォルト値: OFF(false)[デフォルトの設定では、スキーマは処理されません。]
注意 | |
---|---|
XML 文書のスキーマを処理するには、 SFXXMLSAXParser::SetDoNamespaces 関数を呼び出して名前空間処理フラグを ON にする必要があります。 |
注意 | |
---|---|
XML 文書をスキーマで検証するには、以下の設定も必要です。
|
SFXXMLSAXParser::GetDoSchema | SFXXMLGrammar::GrammarType | SFXXMLSAXParser::SetDoNamespaces | SFXXMLSAXParser::SetValidationSchema | SFXXMLSAXParser::SetSchemaLocation
[ public ] Void SetFeature( SFXAnsiStringConstRef name // 機能名(完全修飾 URI) BoolConst value // 機能の値 );
この関数は、指定された機能(Feature)の値を設定します。
サポートされる機能(Feature)は以下の 3 つです。
機能( Feature ) | |
---|---|
SAX : Features and Properties Apache XML : Parser Features |
XML 文書をスキーマで検証するように設定します。
SFXXMLSAXParser saxparser; // SAX パーサー SFXAnsiStringConstRef schema_validation("http://xml.org/sax/features/validation"); // 機能名( 完全修飾 URI ) if(!saxparser.GetFeature(schema_validation) { // XML 文書をスキーマで検証する設定になっていないとき // XML 文書をスキーマで検証する saxparser.SetFeature(schema_validation, true ); }
SFXXMLSAXParser::SetDoNamespaces | SFXXMLSAXParser::SetValidationSchema | SFXXMLSAXParser::GetFeature
[ public ] Void SetGrammar( SFXXMLGrammar::GrammarType grammar // 文法タイプ );
この関数は、XML パーサーが解析する XML ドキュメントの記述内容を規定する文法(言語)を設定します。
デフォルト値: SFXXMLGrammar::GRAMMAR_UNKNOWN(XML ドキュメントの記述内容を規定する文法なし)
DOCTYPE 宣言 | |
---|---|
XML 文書内の DOCTYPE 宣言の内容は、 この関数で文法が SFXXMLGrammar::GRAMMAR_DTD に設定された場合にだけ読み込まれます。 デフォルトの設定(SFXXMLGrammar::GRAMMAR_UNKNOWN)では読み込まれません。 |
SFXXMLGrammar::GrammarType | SFXXMLSAXParser::SetValidationDTD | SFXXMLSAXParser::SetLoadExternalDTD | SFXXMLSAXParser::SetDoSchema | SFXXMLSAXParser::SetValidationSchema | SFXXMLSAXParser::SetSchemaLocation
この関数は、XML スキーマの Annotation 要素の検証を無効にするかどうかのフラグ値(Annotation 要素検証無効フラグ値)を設定します。
デフォルト値: ON(true)
注意 | |
---|---|
Annotation 要素検証無効フラグは、XML 文書を XML スキーマで検証する場合のみ有効です。 デフォルトの設定では、Annotation 要素検証無効フラグは true なので、 XML スキーマの Annotation 要素の検証は行われません。 |
注意 | |
---|---|
現バージョンでは、Annotation 要素検証無効フラグ値を OFF にしても検証は行われません(このフラグは無効です)。 |
SFXXMLSAXParser::GetIgnoreAnnotations | SFXXMLSAXParser::SetGrammar | SFXXMLSAXParser::SetDoSchema | SFXXMLSAXParser::SetValidationSchema | SFXXMLSAXParser::SetSchemaLocation
この関数は、この XML パーサーが XML 文書内に指定された、 外部 DTD ファイルをロードするかどうかのフラグ値(外部 DTD 読み込みフラグ値)を設定します。
デフォルト値: OFF(false)[デフォルトの設定では、外部 DTD ファイルはロードされません。]
注意 | |
---|---|
XML 文書を外部 DTD ファイルをロードして検証するには、以下の設定も必要です。
DTD 検証フラグが ON の場合は、外部 DTD ファイルは自動的にロードされます。 |
注意 | |
---|---|
BREW の制約により、ファイルの絶対パスは 64 文字より小さくなければいけません。 また、携帯端末内のローカルファイルを指定する必要があります(サーバーのファイルは指定できません)。 |
SFXXMLSAXParser::SetGrammar | SFXXMLSAXParser::SetValidationDTD | SFXXMLGrammar::GrammarType | SFXXMLSAXParser::GetLoadExternalDTD
[ public ] Void SetProperty( SFXAnsiStringConstRef name // プロパティ名 VoidConstPtr value // プロパティの値 );
この関数は、指定されたプロパティ(Property)の値を設定します。
注意 | |
---|---|
現在サポートされるプロパティ(Property)は、 SAX パーサーのイベントハンドラの "default-handler" だけです。 "xmldecl-encoding"、"xmldecl-version"、"xmldecl-standalone" のプロパティは、 サポートされていません。 |
プロパティ( 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 ファイル );
この関数は、この XML パーサーが XML 文書を検証するための XSD ファイルを設定します。
注意 | |
---|---|
XML 文書をスキーマで検証するには、以下の設定も必要です。
|
注意 | |
---|---|
BREW の制約により、ファイルの絶対パスは 64 文字より小さくなければいけません。 また、携帯端末内のローカルファイルを指定する必要があります(サーバーのファイルは指定できません)。 |
SFXXMLGrammar::GrammarType | SFXXMLSAXParser::SetDoNamespaces | SFXXMLSAXParser::SetDoSchema | SFXXMLSAXParser::SetValidationSchema | SFXXMLSAXParser::GetValidationSchema
この関数は、この XML パーサーが XML 文書を DTD で検証するかどうかのフラグ値(DTD 検証フラグ値)を設定します。
デフォルト値: OFF(false)[デフォルトの設定では、DTD で検証されません。]
注意 | |
---|---|
XML 文書を DTD で検証するには、以下の設定も必要です。
DTD 検証フラグが ON の場合は、外部 DTD ファイルは自動的にロードされます。 |
注意 | |
---|---|
XML 文書の検証は部分的に行われます。現在のところ、完全な検証はサポートされていません。 |
SFXXMLGrammar::GrammarType | SFXXMLSAXParser::SetValidationDTD | SFXXMLSAXParser::SetLoadExternalDTD | SFXXMLSAXParser::GetValidationDTD
この関数は、この XML パーサーが XML 文書をスキーマで検証するかどうかのフラグ値(スキーマ検証フラグ値)を設定します。
デフォルト値: OFF(false)[デフォルトの設定では、スキーマで検証されません。]
注意 | |
---|---|
XML 文書をスキーマで検証するには、以下の設定も必要です。
|
注意 | |
---|---|
XML 文書の検証は部分的に行われます。現在のところ、完全な検証はサポートされていません。 |
Copyright(c) 2002 - 2024 Sophia Cradle Incorporated All Rights Reserved. |