XMLReader 関数
警告 |
PHP 5.1 以降では、XMLReader はクラス定数を使用します。それより前の
リリースでは、XMLREADER_ELEMENT のような形式の
グローバル定数を使用します。
|
表 328. XMLReader ノード型
定数 | 値 | 説明 |
---|---|---|
XMLReader::NONE (integer) | 0 | ノード型なし |
XMLReader::ELEMENT (integer) | 1 | 開始要素 |
XMLReader::ATTRIBUTE (integer) | 2 | 属性ノード |
XMLReader::TEXT (integer) | 3 | テキストノード |
XMLReader::CDATA (integer) | 4 | CDATA ノード |
XMLReader::ENTITY_REF (integer) | 5 | エンティティ参照ノード |
XMLReader::ENTITY (integer) | 6 | エンティティ宣言ノード |
XMLReader::PI (integer) | 7 | 処理命令 (Processing Instruction) ノード |
XMLReader::COMMENT (integer) | 8 | コメントノード |
XMLReader::DOC (integer) | 9 | 文書ノード |
XMLReader::DOC_TYPE (integer) | 10 | 文書型ノード |
XMLReader::DOC_FRAGMENT (integer) | 11 | 文書片ノード |
XMLReader::NOTATION (integer) | 12 | 記法ノード |
XMLReader::WHITESPACE (integer) | 13 | Whitespace ノード |
XMLReader::SIGNIFICANT_WHITESPACE (integer) | 14 | Significant Whitespace ノード |
XMLReader::END_ELEMENT (integer) | 15 | 終了要素 |
XMLReader::END_ENTITY (integer) | 16 | 終了エンティティ |
XMLReader::XML_DECLARATION (integer) | 17 | XML 宣言ノード |
表 329. XMLReader パーサオプション
定数 | 値 | 説明 |
---|---|---|
XMLReader::LOADDTD (integer) | 1 | DTD を読み込むが、妥当性は検証しない |
XMLReader::DEFAULTATTRS (integer) | 2 | DTD およびデフォルト属性を読み込むが、妥当性は検証しない |
XMLReader::VALIDATE (integer) | 3 | DTD を読み込み、パース時に妥当性を検証する |
XMLReader::SUBST_ENTITIES (integer) | 4 | エンティティを参照で置き換える |
目次
- XMLReader::close — XMLReader の入力を閉じる
- XMLReader::expand — 現在のノードのコピーを DOM オブジェクトとして返す
- XMLReader::getAttribute — 名前をもとに、属性の値を取得する
- XMLReader::getAttributeNo — インデックスをもとに、属性の値を取得する
- XMLReader::getAttributeNs — 名前および URI をもとに、属性の値を取得する
- XMLReader::getParserProperty — 指定したプロパティが設定されているかどうかを示す
- XMLReader::isValid — パースしているドキュメントの妥当性を示す
- XMLReader::lookupNamespace — プレフィックスから、名前空間を検索する
- XMLReader::moveToAttribute — 指定した名前の属性にカーソルを移動する
- XMLReader::moveToAttributeNo — 指定したインデックスの属性にカーソルを移動する
- XMLReader::moveToAttributeNs — 指定した名前の属性にカーソルを移動する
- XMLReader::moveToElement — 現在の属性の親要素にカーソルを移動する
- XMLReader::moveToFirstAttribute — 最初の属性にカーソルを移動する
- XMLReader::moveToNextAttribute — 次の属性にカーソルを移動する
- XMLReader::next — すべてのサブツリーを飛ばして、次のノードにカーソルを移動する
- XMLReader::open — パースする XML を含む URI を設定する
- XMLReader::read — ドキュメント内の次のノードに移動する
- XMLReader::setParserProperty — パーサのオプションを設定または設定解除する
- XMLReader::setRelaxNGSchema — RelaxNG スキーマのファイル名あるいは URI を設定する
- XMLReader::setRelaxNGSchemaSource — RelaxNG スキーマを含むデータを設定する
- XMLReader::XML — パースする XML を含むデータを設定する
XmlReader クラス
アセンブリ: System.Xml (system.xml.dll 内)

Public MustInherit Class XmlReader Implements IDisposable
public abstract class XmlReader : IDisposable
public abstract class XmlReader implements IDisposable
public abstract class XmlReader implements IDisposable

XmlReader は、XML データのストリームへの前方向の読み取り専用アクセスを提供します。XmlReader クラスは、W3C 勧告『Extensible Markup Language (XML) 1.0』および勧告『Namespaces in XML』に準拠しています。
現在のノードは、リーダーが配置されるノードを参照します。リーダーは読み取りメソッドを使用して進み、プロパティには現在のノードの値が反映されます。
![]() |
---|
Microsoft .NET Framework には、XmlReader クラスの具体的な実装である、XmlTextReader、XmlNodeReader、XmlValidatingReader などのクラスが含まれていますが、2.0 リリースでは XmlReader インスタンスを作成する場合、Create メソッドを使用することをお勧めします。詳細については、「XML リーダーの作成」を参照してください。 |
XmlReader は、XML 解析エラー時に XmlException をスローします。例外がスローされると、リーダーの状態は予測不可能になります。たとえば、報告されたノード型が、現在のノードの実際のノード型と異なる場合があります。リーダーがエラー状態にあるかどうかを確認するには、ReadState プロパティを使用します。
XmlReader クラスの詳細については、「XmlReader による XML の読み取り」を参照してください。
セキュリティについての考慮事項
XmlReader クラスを使用する際の考慮事項を次に示します。
-
XmlReader で例外がスローされると、本来アプリケーションには表示されてはならないパス情報が開示されてしまう可能性があります。アプリケーションで例外をキャッチし、適切に処理する必要があります。
-
サービス拒否攻撃が懸念される場合や、信頼関係のないソースを扱う場合は、DTD 処理を無効にしてください。Create メソッドで作成された XmlReader オブジェクトの場合、DTD 処理は既定で無効になります。
DTD 処理を有効にした場合、XmlReader でアクセスできるリソースを、XmlSecureResolver を使って制限できます。また、XML 処理に対するメモリと時間の割り当てが制限されるようにアプリケーションをデザインすることもできます。たとえば、ASP.NET アプリケーションにタイムアウトの制限を設定します。
-
XML データには、スキーマ ファイルなど、外部リソースへの参照が含まれている場合があります。既定では、ユーザー資格情報を持たない XmlUrlResolver を使って外部リソースが解決されます。この点については、次のいずれかの方法でセキュリティを強化できます。
-
XML データに大量の属性、名前空間宣言、入れ子にされた要素が含まれると、処理に膨大な時間を要する場合があります。XmlReader に送られる入力のサイズを制限するには、カスタムの IStream 実装を作成して、XmlReader に適用するようにします。
-
ReadValueChunk メソッドを使用すると、大量のデータ ストリームを処理できます。このメソッドは、値全体に対して単一の文字列を割り当てる代わりに、一度に少数の文字を読み込みます。
-
一意のローカル名、名前空間、またはプレフィックスを大量に含んだ XML ドキュメントを読み込むと、問題が発生する場合があります。XmlReader から派生したクラスを使用する場合、LocalName、Prefix、NamespaceUri のいずれかのプロパティを項目ごとに呼び出し、それによって返された文字列を NameTable に追加できます。NameTable が保持するコレクションのサイズは決して減ることがありません。その結果、文字列ハンドルの実質的な "メモリ リーク" が発生する場合があります。これは、NameTable クラスを継承し、最大サイズ クォータを適用するなどして緩和できます (NameTable の使用を回避したり、サイズが上限に達したときに NameTable を切り替えたりすることはできません)。また、可能であれば、前述のプロパティを使用せずに、MoveToAttribute メソッドと IsStartElement メソッドを使用する方法もあります。これらのメソッドでは、文字列が返されないため、NameTable コレクションがあふれてしまう問題を回避できます。

System.Xml.XmlReader
System.Xml.XmlNodeReader
System.Xml.XmlTextReader
System.Xml.XmlValidatingReader


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


XmlReader コンストラクタ
アセンブリ: System.Xml (system.xml.dll 内)



Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


XmlReader プロパティ

名前 | 説明 | |
---|---|---|
![]() | Item | オーバーロードされます。 派生クラスでオーバーライドされると、属性の値を取得します。 |
![]() | XmlSpace | 派生クラスでオーバーライドされると、現在の xml:space スコープを取得します |

XmlReader メソッド


名前 | 説明 | |
---|---|---|
![]() | Dispose | XmlReader によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。 |
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |


XmlReader メンバ
XML データへの高速で非キャッシュの前方向アクセスを提供するリーダーを表します。
XmlReader データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Item | オーバーロードされます。 派生クラスでオーバーライドされると、属性の値を取得します。 |
![]() | XmlSpace | 派生クラスでオーバーライドされると、現在の xml:space スコープを取得します |


名前 | 説明 | |
---|---|---|
![]() | Dispose | XmlReader によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。 |
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |


- XmlReaderのページへのリンク