Share via


XML リーダーの作成

更新 : November 2007

XmlReader インスタンスは、Create メソッドを使用して作成されます。XmlReaderSettings クラスは、XmlReader オブジェクトで有効にする機能のセットを指定するために使用されます。

9khb6435.alert_caution(ja-jp,VS.90).gif重要 :

Microsoft .NET Framework には、XmlTextReader クラス、XmlNodeReader クラス、XmlValidatingReader クラスなど、XmlReader クラスの具象実装が含まれていますが、.NET Framework Version 2.0 では、XmlReader インスタンスの作成に Create メソッドを使用することをお勧めします。

各機能は、XmlReaderSettings クラスのプロパティを使用することによって、有効または無効にされます。その後、XmlReaderSettings オブジェクトは Create メソッドに渡されます。

Create メソッドと XmlReaderSettings クラスを使用すると、次の利点があります。

  • 作成される XmlReader オブジェクトでサポートする機能を指定できます。

  • 複数のリーダー オブジェクトの作成に、XmlReaderSettings クラスを再使用できます。同じ機能を持つ複数のリーダーの作成に、同じ設定を使用できます。もう 1 つの方法として、XmlReaderSettings インスタンスの設定を変更して、別の機能セットを持つ新しいリーダーを作成できます。

  • 既存のリーダーに機能を追加できます。Create メソッドは別の XmlReader オブジェクトを受け取ることができます。基になる XmlReader オブジェクトは、ユーザー定義のリーダーまたは XmlTextReader オブジェクト、あるいは機能を追加する別の XmlReader インスタンスになることができます。

  • .NET Framework 2.0 リリースで XmlReader クラスに追加されたすべての新機能を最大限に活用します。Create メソッドによって作成された XmlReader オブジェクトだけで利用可能な一致チェック機能の向上や XML 1.0 勧告との整合性の向上など、いくつかの機能があります。

次の表は、XmlReaderSettings クラスの既定のプロパティ設定の一覧です。

プロパティ

既定値

CheckCharacters

true

ConformanceLevel

ConformanceLevel.Document

IgnoreComments

false

IgnoreProcessingInstructions

false

IgnoreWhitespace

false

LineNumberOffset

0.

LinePositionOffset

0

NameTable

null

ProhibitDtd

true

Schemas

空の XmlSchemaSet オブジェクト

ValidationFlags

ProcessIdentityConstraints が有効

ValidationType

ValidationType.None

XmlResolver

新しい XmlUrlResolver オブジェクト

XmlReader のシナリオ

次の表は、いくつかの一般的なシナリオと XmlReaderSettings クラスに適用する設定を示しています。

シナリオ

XmlReaderSettings

データは整形式の XML ドキュメントである必要があります。

ConformanceLevel = ConformanceLevel.Document

データは整形式 XML の解析対象エンティティである必要があります。

ConformanceLevel = ConformanceLevel.Fragment

データは DTD に対して検証される必要があります。

ProhibitDtd = false

ValidationType = ValidationType.DTD

データは XML スキーマに対して検証される必要があります。

ValidationType = ValidationType.Schema

Schemas = XmlSchemaSet to use for validation

データはインラインの XML スキーマに対して検証される必要があります。

ValidationType = ValidationType.Schema

ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema

型のサポートが必要です。

ValidationType = ValidationType.Schema

Schemas = XmlSchemaSet to use

Create メソッドによって作成されない XmlReader 実装の使用が必要になる可能性のある特別なシナリオがいくつかあります。

  • XDR スキーマに対して検証する必要がある場合は、XmlValidatingReader クラスを使用します。
9khb6435.alert_note(ja-jp,VS.90).gifメモ :

.NET Framework 2.0 リリースでは XmlValidatingReader クラスが廃止されています。XML スキーマに移行し、Create メソッドによって返される XmlReader オブジェクトを使用して検証することをお勧めします。

  • XmlNode オブジェクトから XML データを読み取るには、XmlNodeReader クラスを使用します。

  • 要求に応じてエンティティを展開する必要がある場合 (Create メソッドによって作成されたリーダーはすべてのエンティティを展開します)、またはテキスト コンテンツを正規化しない場合は、XmlTextReader クラスを使用します。

  • 既定の属性を返さないようにする場合は、XmlTextReader クラスを使用します。

XmlReader オブジェクトをインスタンス化する方法

Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);

別のリーダー内にリーダー インスタンスをラップする方法

Dim txtReader As XmlTextReader = New XmlTextReader("bookOrder.xml")
Dim settings As New XmlReaderSettings()
settings.Schemas.Add("urn:po-schema", "PO.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create(txtReader, settings)
XmlTextReader txtReader = new XmlTextReader("bookOrder.xml");
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("urn:po-schema", "PO.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(txtReader, settings);

リーダーをチェインして設定を追加する方法

Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.DTD
Dim inner As XmlReader = XmlReader.Create("book.xml", settings) ' DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd")
settings.ValidationType = ValidationType.Schema
Dim outer As XmlReader = XmlReader.Create(inner, settings)  ' XML Schema Validation
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
XmlReader inner = XmlReader.Create("book.xml", settings); // DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader outer = XmlReader.Create(inner, settings);  // XML Schema Validation

参照

概念

XmlReader による XML の読み取り