XmlReader と SAX リーダーの比較

SAX リーダーと同様に、XmlReader は前方参照専用、読み取り専用のカーソルです。XmlReader は、入力に対する高速で非キャッシュのストリーム アクセスを提供します。XmlReader では、ストリームまたはドキュメントを読み取ることができます。これを使用すると、ユーザーはデータを取り出し、アプリケーションに関係のないレコードをスキップできます。XmlReaderSAX リーダーの大きな違いは、SAX モデルが "プッシュ" モデルであるという点です。XmlReader を使用するアプリケーションでは、リーダーから任意にデータを取り出すことができるのに対し、SAX リーダーでは、パーサーがイベントをアプリケーションにプッシュし、新しいノードが読み取られるたびにアプリケーションに通知します。プル モデルの利点を次の表に示します。

利点 説明
状態管理 プッシュ モデルは、非常に複雑な状態機構を構築するためにコンテンツ ハンドラを必要とします。プル モデルのクライアントでは、自然なトップダウン型の洗練された手続きによって状態管理が簡単になります。
複数の入力ストリーム プル モデルでは、クライアントが複数のストリームを 1 つにまとめることができます。これをプッシュ モデルで行おうとすると、非常に複雑になります。
層の生成 プッシュ モデルはプル モデルの最上位に構築できます。逆はできません。
余分な文字列コピーの回避 通常、データはパーサーのバッファから文字列オブジェクトに読み込まれ、次に文字列オブジェクトがクライアントのバッファにプッシュされます。プル モデルでは、文字列が直接書き込まれるバッファをクライアントからパーサーに渡すことができます。
選択的な処理 プッシュ モデルでは、属性、処理命令、空白を含むすべての項目がクライアントに通知されるのに対し、プル モデルのクライアントでは、項目をスキップし、アプリケーションに関係のある項目だけを処理できます。このため、プル モデルでは、きわめて効率的なアプリケーションを作成できます。また、XML ストリームの処理方法に影響するプロパティ (たとえば Normalization) を事前に設定できます。コンテンツのスキップの詳細については、「XmlReader によるコンテンツのスキップ」を参照してください。

参照

XmlReader による XML の読み取り | XmlReader における現在のノードの位置 | XmlReader のプロパティ設定 | XmlReader と XmlNameTable によるオブジェクトの比較 | XmlReader による属性の読み取り | 要素および属性のコンテンツの読み取り | XmlReader によるコンテンツのスキップ | EntityReference の読み取りと展開 | XmlTextReader による XML データの読み取り | XmlNodeReader によるノード ツリーの読み取り | XmlValidatingReader による XML の検証 | カスタマイズされた XML リーダーの作成 | XmlReader クラス | XmlReader メンバ | XmlNodeReader クラス | XmlNodeReader メンバ | XmlTextReader クラス | XmlTextReader メンバ | XmlValidatingReader クラス | XmlValidatingReader メンバ