XmlReader クラスの新機能

更新 : November 2007

Microsoft .NET Framework Version 2.0 では XmlReader クラスの機能と設計に多くの変更が施されています。

XmlReader の作成

このリリースでは、Create メソッドが、XmlReader インスタンスを取得する際の好ましい方法です。Create メソッドは XmlReaderSettings クラスを使用して XmlReader インスタンスがサポートすべき機能を指定します。

詳細については、「XML リーダーの作成」を参照してください。

データ検証

Create メソッドによって作成される XmlReader オブジェクトは、ドキュメント型定義 (DTD) またはスキーマ定義言語 (XSD) のスキーマを使用する検証を強制できます。XmlReaderSettings.ValidationType プロパティによって、XmlReader インスタンスが検証を強制するかどうかが決まります。XmlReaderSettings.ValidationFlags プロパティによって検証設定のオプションが構成されます。XmlSchemaSet クラスは XML スキーマをキャッシュするために使用されます。

メモ :

.NET Framework 2.0 では、XmlValidatingReader クラスと XmlSchemaCollection クラスが廃止されています。

詳細については、「XmlReader による XML データの検証」を参照してください。

データの一致

Create メソッドによって作成される XmlReader オブジェクトは、既定で XmlTextReader 実装よりも適合性があります。Create メソッドによって作成される XmlReader オブジェクトは、既定で次の機能をサポートします。

  • 改行文字の正規化

  • エンティティの展開

  • 既定の属性の追加

XmlReaderSettings.CheckCharacters および XmlReaderSettings.ConformanceLevel プロパティによって、作成された XmlReader オブジェクトに対して有効にする一致チェックの種類を指定できます。詳細については、「XmlReader によるデータ一致チェック」を参照してください。

型のサポート

XML スキーマ定義言語 (XSD) のスキーマ情報の取得をサポートし、呼び出し元が単純型の共通言語ランタイム (CLR) 値として値を要求できるようにします。

ReadContentAs および ReadElementContentAs メソッドは、文字列ではなく、システム型として内容を読み取ることができます。これらの新しいメソッドにより、ユーザーは手動で値変換と解析を行うことなく、コーディング作業に最適な表現で値を取得することができます。

詳細については、「型指定されたデータの読み取り」を参照してください。

新しいヘルパ メソッド

XmlReader クラスには、XML データの解析を容易にする新しいメソッドが含まれています。

  • ReadSubtree: 現在の要素とその子孫すべてを読み込む新しい XmlReader を返します。

  • ReadToDescendant: 指定された名前に一致する次の子要素にリーダーを進めます。

  • ReadToNextSibling: 指定された名前に一致する次の兄弟要素にリーダーを進めます。

  • ReadToFollowing: 指定された名前に一致する次の後続の要素にリーダーを進めます。

  • ReadValueChunk: ストリーミング方式で、XML ドキュメントに埋め込まれているテキストの大きなストリームを読み込みます。

  • ReadContentAsBase64 および ReadElementContentAsBase64: ストリーミング方式で、XML ドキュメントに埋め込まれているバイナリ データの大きなストリームを読み込み、Base64 の内容をデコードします。

  • ReadContentAsBinHex および ReadElementContentAsBinHex: ストリーミング方式で、XML ドキュメントに埋め込まれているバイナリ データの大きなストリームを読み込み、BinHex の内容をデコードします。

セキュリティ機能

ドキュメント型定義 (DTD) 処理を禁止する XmlReader オブジェクトを作成できます。DTD 処理を無効にすると、一部のサービス不能攻撃の防止に役立つ場合があります。DTD 処理が無効な場合、DTD コンテンツの検出時 XmlReader オブジェクトは XmlException をスローします。既定では、DTD 処理は無効です。DTD の処理を有効にするには、XmlReader を作成する前に XmlReaderSettings.ProhibitDtd プロパティを false に設定します。

メモ :

ProhibitDtd プロパティは、XmlTextReader クラスでも使用できます。

エンティティの処理

Create メソッドによって作成される XmlReader オブジェクトは、すべてのエンティティを自動的に展開します。解決できないエンティティが検出された場合は、例外がスローされます。

参照

概念

XmlReader による XML の読み取り