リーダーからのデータの読み込み

Load メソッドに XmlReader パラメーターを渡して XML ドキュメントを読み込むと、他の形式からデータを読み込む場合と比較して、その動作に違いがあります。 リーダーが初期状態のとき、Load メソッドは、リーダーからのコンテンツ全体を使用して、リーダー内のすべてのデータから XML ドキュメント オブジェクト モデル (DOM) を構築します。

既にリーダーがドキュメント内のあるノード上に位置している場合、リーダーが Load メソッドに渡されると、Load は現在のノードと、現在の深さを閉じる終了タグまで、その兄弟すべてをメモリに読み込もうとします。 Load はリーダーからの XML が整形式かどうかを検証するので、Load が成功するかどうかは、読み込みを試みた時点でリーダーが位置していたノードに依存します。 XML が整形式でない場合、Load は例外をスローします。 たとえば、次のノード セットは、ルート レベルの要素が 2 つ含まれ、XML が整形式ではないため、Load は例外をスローします。

  • Comment ノード、Element ノード、Element ノード、EndElement ノードの順序のノード セット

次のノード セットは、ルート レベルの要素が存在しないため、不完全な DOM が作成されます。

  • Comment ノード、ProcessingInstruction ノード、Comment ノード、EndElement ノードの順序のノード セット

この場合、例外はスローされず、データが読み込まれます。 これらのノードの最上位にルート要素を追加すると、エラーなしで保存できる整形式の XML を作成できます。

ドキュメントのルート レベルとしては無効なリーフ ノード (たとえば空白ノードや属性ノード) にリーダーが位置している場合、リーダーはルートとして使用できるノードに移動するまで読み込みを続行します。 ドキュメントの読み込みは、この位置から開始されます。

既定では、Load は、ドキュメント型定義 (DTD) またはスキーマ検証を使用して、XML が有効かどうかを検証しません。 チェックするのは、XML が整形式かどうかだけです。 検証を行うには、XmlReader クラスを使用して XmlReaderSettings を作成する必要があります。 XmlReader クラスは、DTD またはスキーマ定義言語 (XSD) のスキーマを使用して検証を強制できます。 ValidationType クラスの XmlReaderSettings プロパティによって、XmlReader インスタンスが検証を強制するかどうかが決まります。 XML データの検証の詳細については、XmlReader のリファレンス ページの「解説」を参照してください。

関連項目