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

XmlTextReader クラスは XmlReader の実装であり、XML テキスト用のパーサーとして機能します。 このクラスでは、XML が整形式でなければならないという規則が適用されます。 XmlTextReader はドキュメント型定義 (DTD) 情報やスキーマ情報を使用しないため、検証型パーサーでも非検証型パーサーでもありません。 XmlTextReader は、テキストをブロック単位で読み取ることも、ストリームから文字を読み取ることもできます。

メモメモ

.NET Framework Version 2.0 では、XmlReaderSettings クラスと Create メソッドを使用して XmlReader インスタンスを作成する方法を推奨しています。この方法に従えば、.NET Framework 2.0 で導入されたすべての新しい機能を利用できます。詳細については、「XML リーダーの作成」を参照してください。

概要

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

  • XML は整形式でなければならないという規則を適用します。

  • DTD が整形式であることをチェックします。 ただし、DTD は、検証したり、既定の属性を追加したりするためには使用されません。 EntityHandling プロパティが ExpandEntities に設定されている場合、または EntityReference ノードで ResolveEntity メソッドが呼び出された場合は、DTD がエンティティの展開に使用されます。

  • 既定の設定で、EntityHandling プロパティが ExpandCharEntities に設定されていると、展開されていないエンティティ参照を EntityReference ノードとして返します。 エンティティ参照が DTD で定義されていない場合は、ノードで ResolveEntity メソッドが呼び出されない限り、リーダーはエラーを生成しません。

  • 新しい行および属性値の XML 正規化をオフにするオプションを指定できます。 既定では正規化がオフになっています。

  • DTD またはスキーマを基準とした検証は行われません。

  • XmlTextReader は検証チェックに伴うオーバーヘッドが小さいため、高速の XML パーサーとして機能します。

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

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

<?xml version="1.0" encoding="ISO-8859-5"?> のようなエンコーディング宣言には、ドキュメントのエンコーディングを設定するエンコーディング属性が含まれます。 XmlTextReader は、XML 宣言内のエンコーディング属性で検出された文字エンコードを返す Encoding プロパティを持っています。 エンコーディング属性が見つからない場合、ドキュメントの既定値は、ストリームの最初の 2 バイトに基づいて UTF-8 または UTF-16 に設定されます。

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

参照

概念

XmlReader による XML の読み取り

その他の技術情報

XmlReader クラスの使用