XmlTextReader による XML データの読み取り

XmlTextReader クラスは XmlReader の 1 つの実装であり、高速で高性能のパーサーを提供します。このクラスでは、XML が整形式でなければならないという規則が適用されます。XmlTextReader クラスは DTD やスキーマの情報を持たないため、検証パーサーでも非検証パーサーでもありません。このクラスでは、テキストをブロック単位で読み取ることも、ストリームから文字を読み取ることもできます。

XmlTextReader には次の機能があります。

  • XML は整形式でなければならないという規則を適用します。
  • DTD が整形式であることをチェックします。ただし、DTD は、検証、エンティティ参照の展開、既定の属性の追加のためには使われません。
  • DTD またはスキーマに対する検証は行われません。
  • DOCTYPE ノードが整形式であることをチェックします。
  • エンティティが整形式であることをチェックします。ノード タイプが EntityReference の場合は、空の EntityReference ノードが 1 つ返されます。空の EntityReference ノードとは、Value プロパティが string.Empty である EntityReference ノードです。空のノードが返されるのは、エンティティ参照を展開するための DTD またはスキーマが存在しないためです。XmlTextReader は、EntityReference ノードを含む DTD 全体が整形式であることを確認します。
  • XmlTextReader には検証チェックにかかわるオーバーヘッドがないため、優れたパフォーマンスの XML パーサーが提供されます。

XmlTextReader は、ストリーム オブジェクトや TextReader オブジェクト、またはローカル ファイルの場所や Web サイトを識別する URL など、さまざまな入力からデータを読み取ることができます。

XmlTextReader では、XmlResolver を使用して DTD などの外部リソースを特定し、DTD が整形式であるかどうかをチェックできます。XmlResolver の詳細については、「XmlResolver を使用したリソースの解決」を参照してください。

<?xml version="1.0" encoding="ISO-8859-5"?> のようなエンコーディング宣言には、ドキュメントのエンコーディングを設定するエンコーディング属性が含まれます。XmlTextReader には、XML 宣言内のエンコーディング属性に含まれる文字エンコーディングを返す Encoding プロパティがあります。エンコーディング属性が見つからない場合、ドキュメントの既定値は UTF-8 に設定されます。

エンティティ参照を展開するために使われる DTD や、スキーマ ファイルのような外部リソースを読み取る場合、エンコーディングは外部参照に設定されているエンコーディングの値に設定されます。外部参照にエンコーディングが含まれていない場合は、既定で UTF-8 に設定されます。XmlTextReaderSystem.Text.Encoding クラスを使用するため、多くのエンコーディングがサポートされています。したがって、このクラスでサポートされるすべてのエンコーディングは、XmlTextReader でもサポートされます。サポートされないエンコーディングは、<?xml シーケンスを UTF-7 や EBCDIC などの UTF-8 以外のバイト値に割り当てるエンコーディングだけです。

参照

文字ストリームによるコンテンツ全体の読み取り | ドキュメント タイプ宣言 | XmlTextReader による空白の取り扱い | 属性値の正規化 | XmlException を使用した XmlTextReader の例外処理 | XmlReader クラス | XmlReader メンバ | XmlNodeReader クラス | XmlNodeReader メンバ | XmlTextReader クラス | XmlTextReader メンバ | XmlValidatingReader クラス | XmlValidatingReader メンバ