Share via


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

更新 : November 2007

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

tfz3cz6w.alert_note(ja-jp,VS.90).gifメモ :

.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 クラスの使用