前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク & XML ミドルウェア : SophiaFramework UNIVERSE 5.0
SFXXMLSAXParser
[XML] SAX 方式で XML 文書を解析するためのクラスです。
#include <SFXXMLSAXParser.hpp>
class SFXXMLSAXParser : public static_exception< SFCError >;
SFMTYPEDEFCLASS(SFXXMLSAXParser)

継承図

SFXXMLSAXParser クラスの継承図

協調図

SFXXMLSAXParser クラスの協調図

解説

SAX パーサー (SFXXMLSAXParser) では、XML 文書を先頭から順に読み込み、要素や CDATA セクションの開始や終了を検出する度にイベントを発生します。それらのイベントは、SFXXMLDefaultHandler クラスを継承するクラスの然るべきハンドラ関数に通知されて処理されます。

イベントの順序は、XML 文書に含まれる情報の内容と一致します。たとえば、ある要素の内容 ( 文字データ、処理命令、サブ要素など ) は、StartElement イベントと EndElement イベントの間に順番に並べられます。

SAX パーサー (SFXXMLSAXParser) を利用するには、SFXXMLDefaultHandler クラスを継承するクラスを実装して、 SFXXMLSAXParser::SetDefaultHandler 関数を使って SAX パーサー (SFXXMLSAXParser) に登録する必要があります。

SAX パーサー(SFXXMLSAXParser) には、DOM パーサー(SFXXMLDOMParser) よりも少ないメモリで速く解析できるというメリットがあります。

[Note] 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"));

参照

SFXXMLDefaultHandler | SFXXMLDOMParser | SFXXSDDOMParser

メンバ

コンストラクタ/デストラクタ
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 文書をスキーマで検証するかどうかを設定します。

SFXXMLSAXParser::SFXXMLSAXParser
SFXXMLSAXParser クラスのコンストラクタです。
[ public, explicit ]
SFXXMLSAXParser(Void);

SFXXMLSAXParser::~SFXXMLSAXParser
SFXXMLSAXParser クラスのデストラクタです。
[ public ]
~SFXXMLSAXParser(Void);

SFXXMLSAXParser::GetDoIndent
XML 文書を解析するとき、文書をインデントするかどうかを取得します。
[ public, const ]
Bool GetDoIndent(Void);

参照

SFXXMLSAXParser::SetDoIndent


SFXXMLSAXParser::GetDoNamespaces
XML 文書を解析するとき、名前空間を処理するかどうかを取得します。
[ public, const ]
Bool GetDoNamespaces(Void);

参照

SFXXMLSAXParser::SetDoNamespaces


SFXXMLSAXParser::GetDoSchema
スキーマを処理するかどうかを取得します。
[ public, const ]
Bool GetDoSchema(Void);

参照

SFXXMLSAXParser::SetDoSchema


SFXXMLSAXParser::GetFeature
指定した機能の値を取得します。
[ public, const ]
Bool GetFeature(
    SFXAnsiStringConstRef name   // 機能名( 完全修飾 URI )
);

解説

サポートされる機能( Feature ) は以下の 3 つです。

  • http://xml.org/sax/features/namespaces : 名前空間を処理するかどうか
  • http://xml.org/sax/features/validation : XML 文書をスキーマで検証するかどうか
  • http://xml.org/sax/features/namespace-prefixes : 名前空間接頭辞を処理するかどうか
[Note] 機能( 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 );    // 名前空間を処理する
}

参照

SFXXMLSAXParser::SetFeature


SFXXMLSAXParser::GetIgnoreAnnotations
スキーマ付き XML 文書の Annotation 要素を無効にするかどうかを取得します。
[ public, const ]
Bool GetIgnoreAnnotations(Void);

戻り値

  • 無効にするとき : true
  • 無効にしないとき : false

参照

SFXXMLSAXParser::SetIgnoreAnnotations


SFXXMLSAXParser::GetLoadExternalDTD
DTD 付き XML 文書に対し、拡張する DTD ファイルをロードするかどうかを取得します。
[ public, const ]
Bool GetLoadExternalDTD(Void);

参照

SFXXMLSAXParser::SetLoadExternalDTD


SFXXMLSAXParser::GetProperty
指定したプロパティの値を取得します。
[ public, const ]
VoidPtr GetProperty(
    SFXAnsiStringConstRef name   // プロパティ名
);

解説

サポートされるプロパティ( Property )は以下の 1 つです。

  • default-handler : SAX パーサーのイベント ハンドラ
[Note] プロパティ( 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 文書を解析する

参照

SFXXMLSAXParser::SetProperty


SFXXMLSAXParser::GetStandalone
XML 文書の Standalone 宣言を取得します。
[ public, const ]
Bool GetStandalone(Void);

SFXXMLSAXParser::GetValidationDTD
XML 文書を DTD で検証するかどうかを取得します。
[ public, const ]
Bool GetValidationDTD(Void);

参照

SFXXMLSAXParser::SetValidationDTD


SFXXMLSAXParser::GetValidationSchema
XML 文書をスキーマで検証するかどうかを取得します。
[ public, const ]
Bool GetValidationSchema(Void);

参照

SFXXMLSAXParser::SetValidationSchema


SFXXMLSAXParser::Parse
XML 文書ファイルを読み込み、SAX パーサーを使って解析します。
[ public ]
SFCError Parse(
    SFBFileSmpConstRef source   // 解析する XML ファイル
);
[ public ]
SFCError Parse(
    SFXAnsiStringConstRef source   // 解析する XML 文書
);
[ public ]
SFCError Parse(
    SFXPathConstRef source   // 解析する XML ファイル パス
);
[ public ]
SFCError Parse(
    SFXStreamReaderConstRef source   // 入力ストリーム
);

戻り値

  • 成功したとき : SFERR_NO_ERROR
  • パスが不正であるとき、または引数が null のとき : SFERR_INVALID_PARAM
  • 解析するファイルが既にオープンしているとき : SFERR_INVALID_STATE
  • メモリ不足のとき : SFERR_NO_MEMORY
  • 失敗したとき: SFERR_FAILED

XML 文書の解析結果のエラーコードは以下の通りです。

  • version 宣言の XML のバージョンに誤りがあるとき : SFERR_XML_BAD_VERSION( 0x6901 )
  • encoding 宣言のエンコーディングに誤りがあるとき : SFERR_XML_BAD_ENCODING( 0x6902 )
  • standalone 文書宣言で指定した値に誤りがあるとき : SFERR_XML_BAD_STANDALONE( 0x6903 )
  • "<!--"、"-->"、"<[["、"]]>"などの文字列に誤りがあるとき : SFERR_XML_BAD_SEQUENCE( 0x6904 )
  • 属性のデフォルトの型に誤りがあるとき : SFERR_XML_BAD_ATTRDEFTYPE( 0x6905 )
  • 属性の型に誤りがあるとき : SFERR_XML_BAD_ATTRTYPE( 0x6907 )
  • "=" マークがないとき : SFERR_XML_EXPECT_EQUALSIGN( 0x6908 )
  • 属性名がないとき : SFERR_XML_EXPECT_ATTRNAME( 0x690A )
  • XML 宣言が完全でないとき : SFERR_XML_EXPECT_DECLSTRING( 0x690C )
  • 要素名がないとき : SFERR_XML_EXPECT_ELEMENTNAME( 0x690D )
  • 処理命令 ( PI ) のターゲット名がないとき : SFERR_XML_EXPECT_PINAME( 0x690E )
  • 空白文字がないとき : SFERR_XML_EXPECT_WHITESPACE( 0x690F )
  • 終了タグがないとき : SFERR_XML_EXPECT_ENDTAG( 0x6912 )
  • XML 宣言に引用する文字列がないとき : SFERR_XML_EXPECT_QUOTEDSTRING( 0x691D )
  • version 宣言で XML のバージョンが指定されていないとき : SFERR_XML_EXPECT_XMLVERSION( 0x691E )
  • encoding 宣言でエンコーディングが指定されていないとき : SFERR_XML_EXPECT_ENCODING( 0x691F )
  • 開始タグが終了していないとき : SFERR_XML_UNTERMINATED_STARTTAG( 0x692D )
  • 処理命令 ( PI ) が終了していないとき : SFERR_XML_UNTERMINATED_PI( 0x692E )
  • コメントが終了していないとき : SFERR_XML_UNTERMINATED_COMMENT( 0x692F )
  • XML 宣言が終了していないとき : SFERR_XML_UNTERMINATED_XMLDECL( 0x6933 )
  • エンティティ参照が終了していないとき : SFERR_XML_UNTERMINATED_ENTITYREF( 0x6934 )
  • CDATA セクションの文書が終了していないとき : SFERR_XML_UNTERMINATED_CDATA( 0x6935 )
  • XML 1.0 / 1.1 以外のバージョンのとき : SFERR_XML_UNSUPPORT_XMLVERSION( 0x6936 )
  • 文字が有効な範囲にないとき : SFERR_XML_INVALID_CHARREF( 0x6938 )
  • 属性値に誤りがあるとき : SFERR_XML_INVALID_ATTRVALUE( 0x6939 )
  • 要素名に誤りがあるとき : SFERR_XML_INVALID_ELEMENTNAME( 0x693A )
  • エンティティ参照の名前に誤りがあるとき : SFERR_XML_INVALID_ENTITYREFNAME( 0x693B )
  • 要素に誤りがあるとき : SFERR_XML_INVALID_ELEMENT( 0x693C )
  • xml:space 属性に誤りがあるとき : SFERR_XML_INVALID_XMLSPACE( 0x693F )
  • 名前空間接頭辞の定義が見つからないとき : SFERR_XML_UNKNOWN_PREFIX( 0x696B )
  • standalone 文書宣言に誤りがあるとき : SFERR_XML_INVALID_INSTANDALONE( 0x6941 )
  • ">" タグが余分にあるとき : SFERR_XML_MORE_ENDTAG( 0x6971 )
  • タグが対称でないとき : SFERR_XML_TAGSTACK_NOTEMPTY( 0x698C )
  • 処理命令ターゲット名が "xml" であるとき : SFERR_XML_PI_START_NO_WITHXML( 0x698D )
  • standalone 文書宣言がデフォルトの設定になっていないとき : SFERR_XML_NODEFAULT_ATTR_FORSTANDALONE( 0x6990 )
  • EOF に誤りがあるとき : SFERR_XML_UNEXPECTED_EOF( 0x6995 )
  • 名前空間付きの XML 文書で、要素の接頭辞で余分な xmlns があるとき : SFERR_XML_REDUNDANT_XMLNS_PREFIX( 0x6997 )

DTD 付き XML 文書の解析結果のエラーコードは以下の通りです。

  • 記法の名前がないとき : SFERR_XML_EXPECT_NOTATIONNAME( 0x6909 )
  • デフォルトの属性がないとき : SFERR_XML_EXPECT_DEFAULTATTR( 0x690B )
  • 属性リスト宣言 ( ATTLIST ) で属性の型がないとき : SFERR_XML_EXPECT_ATTRTYPE( 0x6910 )
  • 属性リスト宣言 ( ATTLIST ) で属性値がないとき : SFERR_XML_EXPECT_ATTRVALUE( 0x6911 )
  • エンティティの名前がないとき : SFERR_XML_EXPECT_PENAME( 0x6913 )
  • エンティティ参照の名前がないとき : SFERR_XML_EXPECT_ENTITYNAME( 0x6914 )
  • 要素または属性の宣言を区切るマーク( "|" )がないとき : SFERR_XML_EXPECT_ENUMPIPE( 0x6915 )
  • 属性の列挙値がないとき : SFERR_XML_EXPECT_ENUMVALUE( 0x6916 )
  • 子要素を区切るマーク ( "," と "|" ) がないとき :SFERR_XML_EXPECT_SEQCHOICE( 0x6917 )
  • 要素の複数出現を表すマーク ( "*" ) がないとき : SFERR_XML_EXPECT_ASTERISK( 0x6918 )
  • 開始マーク ( "("、"<"、 "[" ) がないとき : SFERR_XML_EXPECT_OPENSIGN( 0x6919 )
  • 終了マーク ( ")"、">"、 "]" ) がないとき : SFERR_XML_EXPECT_ENDSIGN( 0x691A )
  • 解析対象外エンティティの宣言で NDATA キーワードがないとき : SFERR_XML_EXPECT_NDATA( 0x691B )
  • エンティティの値がないとき : SFERR_XML_EXPECT_ENTITYVALUE( 0x691C )
  • 名前空間付きエンティティまたは記法の名前に ":" マークがないとき : SFERR_XML_EXPECT_COLON( 0x6920 )
  • 要素または属性の宣言で "," マークが不足しているとき : SFERR_XML_EXPECT_SEQUENCECOMMA( 0x692B )
  • 要素型宣言が終了していないとき : SFERR_XML_UNTERMINATED_ELEMENTDECL( 0x6930 )
  • エンティティ宣言が終了していないとき : SFERR_XML_UNTERMINATED_ENTITYDECL( 0x6931 )
  • 記法宣言が終了していないとき : SFERR_XML_UNTERMINATED_NOTATIONDECL( 0x6932 )
  • エンティティの宣言で NDATA に誤りがあるとき : SFERR_XML_INVALID_NDATA( 0x693D )
  • 子要素に誤りがあるとき : SFERR_XML_INVALID_CHILDRENELEM( 0x6940 )
  • エンティティが定義されていないとき : SFERR_XML_UNKNOWN_ENTITY( 0x6969 )
  • 要素の内容モデルが定義されていないとき : SFERR_XML_UNKNOWN_MODELTYPE( 0x696A )
  • 要素の数が足らないとき : SFERR_XML_NOT_ENOUGH_ELEMENT( 0x698A )
  • 要素の定義に #PCDATA と "*" が含まれるとき : SFERR_XML_NOREPINMIXED( 0x698B )
  • DOCTYPE で定義するルート要素に誤りがあるとき : SFERR_XML_ROOTELEM_NOTLIKE_DOCTYPE( 0x698E )
  • 必須である属性が設定されていないとき : SFERR_XML_ATTR_NOTPROVIDED( 0x698F )
  • 複数の ID 属性が定義されているとき : SFERR_XML_MULTIPLEID_ATTRS( 0x6991 )
  • 属性の型 ( ID、IDREF、IDREFS、ENTITY、ENTITIES、NMTOKEN、NMTOKENS など ) が定義されていないとき : SFERR_XML_NO_MULTIPLEID_ATTRS( 0x6992 )
  • ID 属性を再利用したとき : SFERR_XML_REUSEDID( 0x6993 )
  • 空要素が内容を持っているとき : SFERR_XML_EMPTYELEM_HAS_CONTENT( 0x6994 )
  • enumeration 属性の値の解析に失敗したとき : SFERR_XML_FAILED_ENUMLIST( 0x6996 )

スキーマ付き XML 文書の解析結果のエラーコードは以下の通りです。

  • xsi:type 属性に誤りがあるとき : SFERR_XML_BAD_XSITYPE( 0x6906 )
  • include または redefine によって異なる名前空間を参照するときに schemaLocation 属性がないとき : SFERR_XML_EXPECT_SCHEMALOCATION( 0x6921 )
  • 名前または名前の参照がないとき : SFERR_XML_EXPECT_NAMEREF( 0x6922 )
  • simpleContent がないとき : SFERR_XML_EXPECT_SIMPLETYPE_CONTENT( 0x6923 )
  • simpleType の list になっていないとき : SFERR_XML_EXPECT_SIMPLETYPE_INLIST( 0x6924 )
  • simpleType の restriction になっていないとき : SFERR_XML_EXPECT_SIMPLETYPE_INRESTRICTION( 0x6925 )
  • simpleType の union になっていないとき : SFERR_XML_EXPECT_SIMPLETYPE_INUNION( 0x6926 )
  • Atomic simpleType の list になっていないとき : SFERR_XML_EXPECT_ATOMIC_ITEMTYPE( 0x6927 )
  • 基底型でないとき : SFERR_XML_EXPECT_BASETYPE( 0x6928 )
  • 派生型でないとき : SFERR_XML_EXPECT_DERIVED_TYPE( 0x6929 )
  • Datatype が検証さないとき : SFERR_XML_EXPECT_DATATYPEVALIDATOR( 0x692A )
  • whiteSpace 要素の属性値は "collapse" 以外のとき : SFERR_XML_EXPECT_WS_COLLAPSE( 0x692C )
  • サポートされていない Datatype のとき : SFERR_XML_UNSUPPORT_FEATURE( 0x6937 )
  • targetNamespace 属性に誤りがあるとき : SFERR_XML_INVALID_TARGETNAMESPACE 0x693E )
  • import する名前空間に誤りがあるとき : SFERR_XML_INVALID_IMPORTNAMESPACE 0x6942 )
  • 要素に誤りがあるとき : SFERR_XML_INVALID_SCHEMA_ELEMENT( 0x6943 )
  • ルート要素に誤りがあるとき : SFERR_XML_INVALID_SCHEMA_ROOT( 0x6944 )
  • annotation に誤りがあるとき : SFERR_XML_INVALID_ANNOTATION( 0x6945 )
  • simpleContent に誤りがあるとき : SFERR_XML_INVALID_SIMPLECONTENT( 0x6946 )
  • complexContent に誤りがあるとき : SFERR_XML_INVALID_COMPLEXCONTENT( 0x6947 )
  • attributeGroup の内容に誤りがあるとき : SFERR_XML_INVALID_ATTGROUPCONTENT( 0x6948 )
  • attribute の内容に誤りがあるとき : SFERR_XML_INVALID_ATTRIBUTECONTENT( 0x6949 )
  • fixed 属性と default 属性を同時に設定したとき : SFERR_XML_INVALID_DEFAULT_FIXED_ATTI( 0x694A )
  • attribute の名前空間に誤りがあるとき : SFERR_XML_INVALID_ATTRIBUTE_NS( 0x694B )
  • group の内容に誤りがあるとき : SFERR_XML_INVALID_GROUPCONTENT( 0x694C )
  • annotation の内容に誤りがあるとき : SFERR_XML_INVALID_ANNOTATIONCONTENT( 0x694D )
  • simpleType の内容に誤りがあるとき : SFERR_XML_INVALID_SIMPLETYPECONTENT( 0x694E )
  • list の内容に誤りがあるとき : SFERR_XML_INVALID_LISTCONTENT( 0x694F )
  • restriction の内容に誤りがあるとき : SFERR_XML_INVALID_RESTRICTIONCONTENT( 0x6950 )
  • union の内容に誤りがあるとき : SFERR_XML_INVALID_UNIONCONTENT( 0x6951 )
  • redefine が重複しているとき : SFERR_XML_INVALID_REDEFINE( 0x6952 )
  • redefine する simpleType に誤りがあるとき : SFERR_XML_INVALID_REDEFINE_SIMPLETYPE( 0x6953 )
  • redefine する simpleType の基底型に誤りがあるとき : SFERR_XML_INVALID_REDEFINE_SIMPLETYPEBASE( 0x6954 )
  • redefine する complexType に誤りがあるとき : SFERR_XML_INVALID_REDEFINE_COMPLEXTYPE( 0x6955 )
  • redefine する complexType の基底型に誤りがあるとき : SFERR_XML_INVALID_REDEFINE_COMPLEXTYPEBASE( 0x6956 )
  • redefine する group の範囲に誤りがあるとき : SFERR_XML_INVALID_REDEFINE_GROUP_MINMAX( 0x6957 )
  • redefine できないとき : SFERR_XML_INVALID_REDEFINE_CHILD( 0x6958 )
  • complexType に誤りがあるとき : SFERR_XML_INVALID_COMPLEXTYPEINFO( 0x6959 )
  • simpleContent の基底型に誤りがあるとき : SFERR_XML_INVALID_SIMPLECONTENT_BASE( 0x695A )
  • complexType の基底型に誤りがあるとき : SFERR_XML_INVALID_COMPLEXTYPE_BASE( 0x695B )
  • complexContent の子要素に誤りがあるとき : SFERR_XML_INVALID_CHILD_COMPLEXCONTENT( 0x695C )
  • 要素に fixed 属性と default 属性を同時に設定したとき : SFERR_XML_INVALID_DEFAULT_FIXED_ELEMENT( 0x695D )
  • substitutionGroup に誤りがあるとき : SFERR_XML_INVALID_SUBSGROUP( 0x695E )
  • 名前空間の参照に誤りがあるとき : SFERR_XML_INVALID_NSREFERENCE( 0x695F )
  • all の内容に誤りがあるとき : SFERR_XML_INVALID_ALLCONTENT( 0x6960 )
  • データの範囲に誤りがあるとき : SFERR_XML_INVALID_MIN_MAX_OCCURS( 0x6961 )
  • complexType の子要素の型に誤りがあるとき : SFERR_XML_INVALID_CHILD_COMPLEXTYPE( 0x6962 )
  • anyAttribute の内容に誤りがあるとき : SFERR_XML_INVALID_ANYATTRIBUTECONTENT( 0x6963 )
  • simpleContent に子要素があるとき : SFERR_XML_INVALID_CHILD_SIMPLECONTENT( 0x6964 )
  • simpleType に子要素があるとき : SFERR_XML_INVALID_SIMPLETYPE_HAS_CHILD( 0x6965 )
  • fixed 属性に誤りがあるとき : SFERR_XML_INVALID_FIXED_VALUE( 0x6966 )
  • block 属性に誤りがあるとき : SFERR_XML_INVALID_BLOCK_VALUE( 0x6967 )
  • final 属性に誤りがあるとき : SFERR_XML_INVALID_FINAL_VALUE( 0x6968 )
  • complexType が定義されていないとき : SFERR_XML_UNKNOWN_COMPLEXTYPE( 0x696C )
  • simpleType が定義されていないとき : SFERR_XML_UNKNOWN_SIMPLETYPE( 0x696D )
  • include する名前空間と include される名前空間に誤りがあるとき : SFERR_XML_DIFFERENCE_INCLUDE_NS( 0x696E )
  • import する名前空間と import される名前空間に誤りがあるとき : SFERR_XML_DIFFERENCE_IMPORT_NS( 0x696F )
  • redefine する名前空間と redefine される名前空間に誤りがあるとき : SFERR_XML_DIFFERENCE_REDEFINE_NS( 0x6970 )
  • DTD 付きの XML 文書または 要素数が定義されたものより余分にあるとき : SFERR_XML_MORE_ELEMENT( 0x6972 )
  • 複数の complexType の名前が定義されているとき : SFERR_XML_MORE_COMPLEXTYPE_NAME( 0x6973 )
  • 複数の simpleType の名前が定義されているとき : SFERR_XML_MORE_SIMPLEYPE_NAME( 0x6974 )
  • 複数の attribute の参照の内容が定義されているとき : SFERR_XML_MORE_ATTRIBUTEREF_CONTENT( 0x6975 )
  • default 属性は use 属性が optional 以外で設定されているとき : SFERR_XML_NOT_OPTIONAL_DEFAULT_ATTI( 0x6976 )
  • simpleType が見つからないとき : SFERR_XML_NOT_FIND_SIMPLETYPE( 0x6977 )
  • redefine する宣言が見つからないとき : SFERR_XML_NOT_FIND_REDEFINE_DECLARATION( 0x6978 )
  • type 属性が見つからないとき : SFERR_XML_NOT_FIND_TYPE( 0x6979 )
  • 要素の参照が見つからないとき : SFERR_XML_NOT_FIND_REF_ELEMENT( 0x697A )
  • スキーマ宣言が見つからないとき : SFERR_XML_NOT_FIND_DECLARATION( 0x697B )
  • attribute の定義が見つからないとき : SFERR_XML_NOT_FIND_ATTRIBUTE( 0x697C )
  • 基底型の定義が見つからないとき : SFERR_XML_NOT_FIND_BASETYPE( 0x697D )
  • type 属性の定義が重複しているとき : SFERR_XML_DUPLICATE_TYPE( 0x697E )
  • 要素の宣言が重複しているとき : SFERR_XML_DUPLICATE_ELEMENT_DECLARATION( 0x697F )
  • attribute の参照が重複しているとき : SFERR_XML_DUPLICATE_REFATTRIBUTE( 0x6980 )
  • facet の定義が重複しているとき : SFERR_XML_DUPLICATE_FACET( 0x6981 )
  • attribute の定義が重複しているとき : SFERR_XML_REPEATED_ATTRIBUTE( 0x6982 )
  • substitution の定義が重複してるとき : SFERR_XML_REPEATED_SUBSTITUTION( 0x6983 )
  • extension の定義が重複しているとき : SFERR_XML_REPEATED_EXTENSION( 0x6984 )
  • restriction の定義が重複しているとき : SFERR_XML_REPEATED_RESTRICTION( 0x6985 )
  • union の定義が重複しているとき : SFERR_XML_REPEATED_UNION( 0x6986 )
  • list の定義が重複しているとき : SFERR_XML_REPEATED_LIST( 0x6987 )
  • 要素を空要素にしようとしたとき : SFERR_XML_NILL_NOT_ALLOWED( 0x6988 )
  • 参照する内容が存在しないとき : SFERR_XML_NO_CONTENT_FOR_REF( 0x6989 )
  • group の redefine が重複しているとき : SFERR_XML_REDEFINEREF_COUNT( 0x6998 )
  • attributeGroup の redefine が重複しているとき : SFERR_XML_ATTFROUPREF_COUNT( 0x6999 )
  • AnonymousType の要素が定義されていないとき : SFERR_XML_ELEMENT_WITH_ANONYMOUSTYPE( 0x699A )
  • データ型が循環定義されているとき : SFERR_XML_CIRCULAR_DEFINITION( 0x699B )
  • all 要素の子要素以外の要素が含まれているとき : SFERR_XML_ALLCONTENT_LIMITED( 0x699C )
  • abstractType が定義されているとき : SFERR_XML_ABSTRACT_TYPE( 0x699D )
  • ルート要素で他の要素を参照しようとしたとき : SFERR_XML_TOPELEMENT_INCLUDE_REF( 0x699E )

詳細情報: SFCErrorEnum

解説

SFXXMLSAXParser::Parse 関数は、XML 文書ファイルを読み込み、解析する関数です。引数には入力ストリーム、ファイル パス、文字列を渡します。 ファイル パスのデフォルト ディレクトリはアプリケーションのホーム フォルダになります。

参照

SFCErrorEnum


SFXXMLSAXParser::Reset
すべての内部変数をリセットします。
[ public ]
Void Reset(Void);

SFXXMLSAXParser::SetDefaultHandler
イベントを通知するハンドラを設定します。
[ public ]
Void SetDefaultHandler(
    SFXXMLDefaultHandlerPtr handler   // ハンドラ
);

解説

SFXXMLDefaultHandler クラスを継承して作成したハンドラを設定します。

参照

SFXXMLDefaultHandler


SFXXMLSAXParser::SetDoIndent
XML 文書を解析するとき、文書をインデントするかどうかを設定します。
[ public ]
Void SetDoIndent(
    BoolConst state   // 文書をインデントするかどうか
);

参照

SFXXMLSAXParser::GetDoIndent


SFXXMLSAXParser::SetDoNamespaces
XML 文書を解析するとき、名前空間を処理するかどうかを設定します。
[ public ]
Void SetDoNamespaces(
    BoolConst state   // 名前空間を処理するかどうか
);

参照

SFXXMLSAXParser::GetDoNamespaces


SFXXMLSAXParser::SetDoSchema
スキーマを処理するかどうかを設定します。
[ public ]
Void SetDoSchema(
    BoolConst state   // スキーマを処理するかどうか
);

参照

SFXXMLSAXParser::GetDoSchema


SFXXMLSAXParser::SetFeature
指定した機能の値を設定します。
[ public ]
Void SetFeature(
    SFXAnsiStringConstRef name   // 機能名( 完全修飾 URI )
    BoolConst value              // 機能の値
);

解説

サポートされる機能( Feature ) は以下の 3 つです。

  • http://xml.org/sax/features/namespaces : 名前空間を処理するかどうか
  • http://xml.org/sax/features/validation : XML 文書をスキーマで検証するかどうか
  • http://xml.org/sax/features/namespace-prefixes : 名前空間接頭辞を処理するかどうか
[Note] 機能( 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 文書をスキーマで検証する
}

参照

SFXXMLSAXParser::GetFeature


SFXXMLSAXParser::SetGrammar
パーサーが使う文法を設定します。
[ public ]
Void SetGrammar(
    SFXXMLGrammar::GrammarType grammar   // 文法タイプ
);

SFXXMLSAXParser::SetIgnoreAnnotations
Annotation 要素を無効にするかどうかを設定します
[ public ]
Void SetIgnoreAnnotations(
    BoolConst state   // Annotation 要素を無効にするかどうか
);

参照

SFXXMLSAXParser::GetIgnoreAnnotations


SFXXMLSAXParser::SetLoadExternalDTD
DTD 付き XML 文書に対し、外部の DTD ファイルをロードするかどうかを設定します。
[ public ]
Void SetLoadExternalDTD(
    BoolConst state   // 外部の DTD ファイルをロードするかどうか
);

参照

SFXXMLSAXParser::GetLoadExternalDTD


SFXXMLSAXParser::SetProperty
指定したプロパティの値を設定します。
[ public ]
Void SetProperty(
    SFXAnsiStringConstRef name   // プロパティ名
    VoidConstPtr value           // プロパティの値
);

解説

サポートされるプロパティ( Property )は以下の 1 つです。

  • default-handler : SAX パーサーのイベント ハンドラ
[Note] プロパティ( 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 文書を解析する

参照

SFXXMLSAXParser::GetProperty


SFXXMLSAXParser::SetSchemaLocation
スキーマ付き XML 文書の XSD ファイルを設定します。
[ public ]
Void SetSchemaLocation(
    SFXAnsiStringConstRef name   // ローカル XSD ファイル
);

SFXXMLSAXParser::SetValidationDTD
XML 文書を DTD で検証するかどうかを設定します。
[ public ]
Void SetValidationDTD(
    BoolConst state   // XML 文書を DTD で検証するかどうか
);

参照

SFXXMLSAXParser::GetValidationDTD


SFXXMLSAXParser::SetValidationSchema
XML 文書をスキーマで検証するかどうかを設定します。
[ public ]
Void SetValidationSchema(
    BoolConst state   // XML 文書をスキーマで検証するかどうか
);

参照

SFXXMLSAXParser::GetValidationSchema