この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

XmlReader クラス

 

公開日: 2016年10月

XML データへの高速で非キャッシュの前方向アクセスを提供するリーダーを表します。

この型の .NET Framework ソース コードを参照するを参照してください。、 Reference Sourceします。

名前空間:   System.Xml
アセンブリ:  System.Xml (System.Xml.dll 内)


public abstract class XmlReader : IDisposable

名前説明
System_CAPS_protmethodXmlReader()

XmlReader クラスの新しいインスタンスを初期化します。

名前説明
System_CAPS_pubpropertyAttributeCount

派生クラスでオーバーライドされると、現在のノードの属性数を取得します。

System_CAPS_pubpropertyBaseURI

派生クラスでオーバーライドされると、現在のノードのベース URI を取得します。

System_CAPS_pubpropertyCanReadBinaryContent

XmlReader がバイナリ コンテンツ用の読み取りメソッドを実装するかどうかを示す値を取得します。

System_CAPS_pubpropertyCanReadValueChunk

XmlReaderReadValueChunk メソッドを実装しているかどうかを示す値を取得します。

System_CAPS_pubpropertyCanResolveEntity

このリーダーがエンティティを解析および解決できるかどうかを示す値を取得します。

System_CAPS_pubpropertyDepth

派生クラスでオーバーライドされると、XML ドキュメント内の現在のノードの深さを取得します。

System_CAPS_pubpropertyEOF

派生クラスでオーバーライドされると、リーダーがストリームの末尾に配置されているかどうかを示す値を取得します。

System_CAPS_pubpropertyHasAttributes

現在のノードに属性があるかどうかを示す値を取得します。

System_CAPS_pubpropertyHasValue

派生クラスでオーバーライドされた場合は、現在のノードが保持できるかどうかを示す値を取得、 Valueです。

System_CAPS_pubpropertyIsDefault

派生クラスでオーバーライドされると、現在のノードが DTD またはスキーマで定義された既定値から生成された属性かどうかを示す値を取得します。

System_CAPS_pubpropertyIsEmptyElement

派生クラスでオーバーライドされた場合は、現在のノードが空の要素であるかどうかを示す値を取得 (たとえば、 <MyElement/>)。

System_CAPS_pubpropertyItem[Int32]

派生クラスでオーバーライドされると、指定したインデックスの属性の値を取得します。

System_CAPS_pubpropertyItem[String]

派生クラスでオーバーライドされた場合は、指定した属性の値を取得 Nameします。

System_CAPS_pubpropertyItem[String, String]

派生クラスでオーバーライドされた場合は、指定した属性の値を取得 LocalNameNamespaceURIです。

System_CAPS_pubpropertyLocalName

派生クラスでオーバーライドされると、現在のノードのローカル名を取得します。

System_CAPS_pubpropertyName

派生クラスでオーバーライドされると、現在のノードの限定名を取得します。

System_CAPS_pubpropertyNamespaceURI

派生クラスでオーバーライドされると、リーダーが配置されているノードの名前空間 URI (W3C の名前空間の仕様における定義に準拠) を取得します。

System_CAPS_pubpropertyNameTable

派生クラスでオーバーライドされると、 XmlNameTable この実装に関連付けられています。

System_CAPS_pubpropertyNodeType

派生クラスでオーバーライドされると、現在のノードの型を取得します。

System_CAPS_pubpropertyPrefix

派生クラスでオーバーライドされると、現在のノードに関連付けられている名前空間プレフィックスを取得します。

System_CAPS_pubpropertyQuoteChar

派生クラスでオーバーライドされると、属性ノードの値を囲むために使用する引用符文字を取得します。

System_CAPS_pubpropertyReadState

派生クラスでオーバーライドされると、リーダーの状態を取得します。

System_CAPS_pubpropertySchemaInfo

スキーマ検証の結果、現在のノードに割り当てられているスキーマ情報を取得します。

System_CAPS_pubpropertySettings

この XmlReader インスタンスを作成するために使用された XmlReaderSettings オブジェクトを取得します。

System_CAPS_pubpropertyValue

派生クラスでオーバーライドされると、現在のノードのテキスト値を取得します。

System_CAPS_pubpropertyValueType

現在のノードの共通言語ランタイム (CLR) 型を取得します。

System_CAPS_pubpropertyXmlLang

派生クラスでオーバーライドされると、取得、現在 xml:lang スコープ。

System_CAPS_pubpropertyXmlSpace

派生クラスでオーバーライドされると、取得、現在 xml:space スコープ。

名前説明
System_CAPS_pubmethodClose()

派生クラスでオーバーライドされると、変更、 ReadStateClosedします。

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream)

既定の設定で指定されたストリームを使用して新しい XmlReader インスタンスを作成します。

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream, XmlReaderSettings)

指定されたストリームと設定で、新しい XmlReader インスタンスを作成します。

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream, XmlReaderSettings, String)

指定されたストリーム、ベース URI、設定を使用して、新しい XmlReader インスタンスを作成します。

System_CAPS_pubmethodSystem_CAPS_staticCreate(Stream, XmlReaderSettings, XmlParserContext)

解析のために指定されたストリーム、設定、およびコンテキスト情報を使用して、新しい XmlReader インスタンスを作成します。

System_CAPS_pubmethodSystem_CAPS_staticCreate(String)

指定された URI で新しい XmlReader インスタンスを作成します。

System_CAPS_pubmethodSystem_CAPS_staticCreate(String, XmlReaderSettings)

指定された URI と設定を使用して新しい XmlReader インスタンスを作成します。

System_CAPS_pubmethodSystem_CAPS_staticCreate(String, XmlReaderSettings, XmlParserContext)

指定された URI、設定、解析するためのコンテキスト情報を使用して、新しい XmlReader インスタンスを作成します。

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader)

指定されたテキスト リーダーを使用して新しい XmlReader インスタンスを作成します。

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader, XmlReaderSettings)

指定されたテキスト リーダーと設定を使用して新しい XmlReader インスタンスを作成します。

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader, XmlReaderSettings, String)

指定されたテキスト リーダー、設定、およびベース URI を使用して、新しい XmlReader インスタンスを作成します。

System_CAPS_pubmethodSystem_CAPS_staticCreate(TextReader, XmlReaderSettings, XmlParserContext)

指定したテキスト リーダー、設定、および解析するためのコンテキスト情報を使用して、新しい XmlReader インスタンスを作成します。

System_CAPS_pubmethodSystem_CAPS_staticCreate(XmlReader, XmlReaderSettings)

指定された XML リーダーと設定を使用して新しい XmlReader インスタンスを作成します。

System_CAPS_pubmethodDispose()

XmlReader クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。

System_CAPS_protmethodDispose(Boolean)

XmlReader によって使用されているアンマネージ リソースを解放し、オプションでマネージ リソースも解放します。

System_CAPS_pubmethodEquals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。(Object から継承されます。)

System_CAPS_protmethodFinalize()

オブジェクトが、ガベージ コレクションによって収集される前に、リソースの解放とその他のクリーンアップ操作の実行を試みることができるようにします。(Object から継承されます。)

System_CAPS_pubmethodGetAttribute(Int32)

派生クラスでオーバーライドされると、指定したインデックスの属性の値を取得します。

System_CAPS_pubmethodGetAttribute(String)

派生クラスでオーバーライドされた場合は、指定した属性の値を取得 Nameします。

System_CAPS_pubmethodGetAttribute(String, String)

派生クラスでオーバーライドされた場合は、指定した属性の値を取得 LocalNameNamespaceURIです。

System_CAPS_pubmethodGetHashCode()

既定のハッシュ関数として機能します。(Object から継承されます。)

System_CAPS_pubmethodGetType()

現在のインスタンスの Type を取得します。(Object から継承されます。)

System_CAPS_pubmethodGetValueAsync()

現在のノードのテキスト値を非同期に取得します。

System_CAPS_pubmethodSystem_CAPS_staticIsName(String)

文字列引数が有効な XML 名かどうかを示す値を返します。

System_CAPS_pubmethodSystem_CAPS_staticIsNameToken(String)

文字列引数が有効な XML 名トークンかどうかを示す値を返します。

System_CAPS_pubmethodIsStartElement()

呼び出し MoveToContent し、現在のコンテンツ ノードが開始タグまたは空要素タグかどうか。

System_CAPS_pubmethodIsStartElement(String)

呼び出し MoveToContent し、現在のコンテンツ ノードが開始タグまたは空要素タグで、テスト、 Name 見つかった要素のプロパティが指定した引数に一致します。

System_CAPS_pubmethodIsStartElement(String, String)

呼び出し MoveToContent し、現在のコンテンツ ノードが開始タグまたは空要素タグで、テスト、 LocalNameNamespaceURI 見つかった要素のプロパティが、指定した文字列と一致します。

System_CAPS_pubmethodLookupNamespace(String)

派生クラスでオーバーライドされると、現在の要素のスコープの名前空間プリフィックスを解決します。

System_CAPS_protmethodMemberwiseClone()

現在の Object の簡易コピーを作成します。(Object から継承されます。)

System_CAPS_pubmethodMoveToAttribute(Int32)

派生クラスでオーバーライドされると、指定したインデックスの属性に移動します。

System_CAPS_pubmethodMoveToAttribute(String)

派生クラスでオーバーライドされると、指定した属性に移動 Nameします。

System_CAPS_pubmethodMoveToAttribute(String, String)

派生クラスでオーバーライドされると、指定した属性に移動 LocalNameNamespaceURIです。

System_CAPS_pubmethodMoveToContent()

現在のノードがコンテンツであるかどうかをチェック (空白文字以外のテキスト、 CDATA, 、Element, 、EndElement, 、EntityReference, 、または EndEntity) ノードです。 ノードがコンテンツ ノードでない場合、リーダーは、次のコンテンツ ノードまたはファイルの末尾までスキップします。 ProcessingInstructionDocumentTypeCommentWhitespace、または SignificantWhitespace に該当するノードはスキップされます。

System_CAPS_pubmethodMoveToContentAsync()

現在のノードがコンテンツ ノードであるかどうかを非同期的に確認します。 ノードがコンテンツ ノードでない場合、リーダーは、次のコンテンツ ノードまたはファイルの末尾までスキップします。

System_CAPS_pubmethodMoveToElement()

派生クラスでオーバーライドされると、現在の属性ノードを含む要素に移動します。

System_CAPS_pubmethodMoveToFirstAttribute()

派生クラスでオーバーライドされると、最初の属性に移動します。

System_CAPS_pubmethodMoveToNextAttribute()

派生クラスでオーバーライドされると、次の属性に移動します。

System_CAPS_pubmethodRead()

派生クラスでオーバーライドされると、ストリームから次のノードを読み取ります。

System_CAPS_pubmethodReadAsync()

ストリームから次のノードを非同期に読み取ります。

System_CAPS_pubmethodReadAttributeValue()

派生クラスでオーバーライドされた場合は、属性値を解析して、1 つ以上に Text, 、EntityReference, 、または EndEntity ノードです。

System_CAPS_pubmethodReadContentAs(Type, IXmlNamespaceResolver)

指定された型のオブジェクトとして内容を読み取ります。

System_CAPS_pubmethodReadContentAsAsync(Type, IXmlNamespaceResolver)

指定された型のオブジェクトとして内容を非同期に読み取ります。

System_CAPS_pubmethodReadContentAsBase64(Byte[], Int32, Int32)

コンテンツを読み取り、Base64 でデコードされたバイナリ バイトを返します。

System_CAPS_pubmethodReadContentAsBase64Async(Byte[], Int32, Int32)

コンテンツを非同期に読み取り、Base64 でデコードされたバイナリ バイトを返します。

System_CAPS_pubmethodReadContentAsBinHex(Byte[], Int32, Int32)

コンテンツを読み取り、BinHex でデコードされたバイナリ バイトを返します。

System_CAPS_pubmethodReadContentAsBinHexAsync(Byte[], Int32, Int32)

非同期的に、コンテンツを読み取り、 BinHex デコードされたバイナリ バイトです。

System_CAPS_pubmethodReadContentAsBoolean()

現在の位置でテキストの内容を読み取り、 Booleanです。

System_CAPS_pubmethodReadContentAsDateTime()

現在の位置でテキストの内容を読み取り、 DateTime オブジェクトです。

System_CAPS_pubmethodReadContentAsDateTimeOffset()

現在の位置でテキストの内容を読み取り、 DateTimeOffset オブジェクトです。

System_CAPS_pubmethodReadContentAsDecimal()

現在の位置でテキストの内容を読み取り、 Decimal オブジェクトです。

System_CAPS_pubmethodReadContentAsDouble()

現在の位置のテキストの内容を、倍精度浮動小数点数として読み取ります。

System_CAPS_pubmethodReadContentAsFloat()

現在の位置のテキストの内容を、単精度浮動小数点数として読み取ります。

System_CAPS_pubmethodReadContentAsInt()

現在の位置でテキストの内容を 32 ビット符号付き整数として読み取ります。

System_CAPS_pubmethodReadContentAsLong()

現在の位置でテキストの内容を 64 ビット符号付き整数として読み取ります。

System_CAPS_pubmethodReadContentAsObject()

現在の位置でテキストの内容を読み取り、 Objectです。

System_CAPS_pubmethodReadContentAsObjectAsync()

現在の位置でテキストの内容を非同期に読み取ります、 Objectです。

System_CAPS_pubmethodReadContentAsString()

現在の位置でテキストの内容を読み取り、 String オブジェクトです。

System_CAPS_pubmethodReadContentAsStringAsync()

現在の位置でテキストの内容を非同期に読み取ります、 String オブジェクトです。

System_CAPS_pubmethodReadElementContentAs(Type, IXmlNamespaceResolver)

要素の内容を要求された型として返します。

System_CAPS_pubmethodReadElementContentAs(Type, IXmlNamespaceResolver, String, String)

指定されたローカル名と名前空間 URI が現在の要素のものと一致することを確認し、要素の内容を要求された型として読み込みます。

System_CAPS_pubmethodReadElementContentAsAsync(Type, IXmlNamespaceResolver)

要素の内容を要求された型として非同期に読み取ります。

System_CAPS_pubmethodReadElementContentAsBase64(Byte[], Int32, Int32)

要素を読み取り、Base64 の内容をデコードします。

System_CAPS_pubmethodReadElementContentAsBase64Async(Byte[], Int32, Int32)

要素を非同期に読み取り、Base64 の内容をデコードします。

System_CAPS_pubmethodReadElementContentAsBinHex(Byte[], Int32, Int32)

要素を読み取り、BinHex の内容をデコードします。

System_CAPS_pubmethodReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

非同期的に、要素を読み取り、 BinHex コンテンツです。

System_CAPS_pubmethodReadElementContentAsBoolean()

現在の要素を読み取ってとして内容を返す、 Boolean オブジェクトです。

System_CAPS_pubmethodReadElementContentAsBoolean(String, String)

確認、指定されたローカル名と名前空間 URI と一致する現在の要素のし、現在の要素を読み込んでとして内容を返します、 Boolean オブジェクトです。

System_CAPS_pubmethodReadElementContentAsDateTime()

現在の要素を読み取ってとして内容を返す、 DateTime オブジェクトです。

System_CAPS_pubmethodReadElementContentAsDateTime(String, String)

確認、指定されたローカル名と名前空間 URI と一致する現在の要素のし、現在の要素を読み込んでとして内容を返します、 DateTime オブジェクトです。

System_CAPS_pubmethodReadElementContentAsDecimal()

現在の要素を読み取ってとして内容を返す、 Decimal オブジェクトです。

System_CAPS_pubmethodReadElementContentAsDecimal(String, String)

確認、指定されたローカル名と名前空間 URI と一致する現在の要素のし、現在の要素を読み込んでとして内容を返します、 Decimal オブジェクトです。

System_CAPS_pubmethodReadElementContentAsDouble()

現在の要素を読み込み、その内容を倍精度浮動小数点数として返します。

System_CAPS_pubmethodReadElementContentAsDouble(String, String)

指定されたローカル名と名前空間 URI が現在の要素のものと一致することを確認し、現在の要素を読み込んで内容を倍精度浮動小数点数として返します。

System_CAPS_pubmethodReadElementContentAsFloat()

現在の要素を読み込み、その内容を単精度浮動小数点数として返します。

System_CAPS_pubmethodReadElementContentAsFloat(String, String)

指定されたローカル名と名前空間 URI が現在の要素のものと一致することを確認し、現在の要素を読み込んで内容を単精度浮動小数点数として返します。

System_CAPS_pubmethodReadElementContentAsInt()

現在の要素を読み取り、その内容を 32 ビット符号付き整数として返します。

System_CAPS_pubmethodReadElementContentAsInt(String, String)

指定されたローカル名と名前空間 URI が現在の要素のものと一致することを確認し、現在の要素を読み込んで内容を 32 ビット符号付き整数として返します。

System_CAPS_pubmethodReadElementContentAsLong()

現在の要素を読み取り、その内容を 64 ビット符号付き整数として返します。

System_CAPS_pubmethodReadElementContentAsLong(String, String)

指定されたローカル名と名前空間 URI が現在の要素のものと一致することを確認し、現在の要素を読み込んで内容を 64 ビット符号付き整数として返します。

System_CAPS_pubmethodReadElementContentAsObject()

現在の要素を読み取ってとして内容を返す、 Objectです。

System_CAPS_pubmethodReadElementContentAsObject(String, String)

確認、指定されたローカル名と名前空間 URI と一致する現在の要素のし、現在の要素を読み込んでとして内容を返します、 Objectです。

System_CAPS_pubmethodReadElementContentAsObjectAsync()

非同期的に現在の要素を読み込んで内容を返しますとして、 Objectです。

System_CAPS_pubmethodReadElementContentAsString()

現在の要素を読み取ってとして内容を返す、 String オブジェクトです。

System_CAPS_pubmethodReadElementContentAsString(String, String)

確認、指定されたローカル名と名前空間 URI と一致する現在の要素のし、現在の要素を読み込んでとして内容を返します、 String オブジェクトです。

System_CAPS_pubmethodReadElementContentAsStringAsync()

非同期的に現在の要素を読み込んで内容を返しますとして、 String オブジェクトです。

System_CAPS_pubmethodReadElementString()

テキストのみの要素を読みます。 ただし、ことをお勧めを使用すること、 ReadElementContentAsString() メソッド代わりに、この操作を処理するより簡単な方法を提供するためです。

System_CAPS_pubmethodReadElementString(String)

確認、 Name テキストだけの要素を読み取る前に、指定した文字列と一致する見つかった要素のプロパティです。 ただし、ことをお勧めを使用すること、 ReadElementContentAsString() メソッド代わりに、この操作を処理するより簡単な方法を提供するためです。

System_CAPS_pubmethodReadElementString(String, String)

確認、 LocalNameNamespaceURI テキストだけの要素を読み取る前に、指定した文字列と一致する要素のプロパティにあります。 ただし、ことをお勧めを使用すること、 ReadElementContentAsString(String, String) メソッド代わりに、この操作を処理するより簡単な方法を提供するためです。

System_CAPS_pubmethodReadEndElement()

現在のコンテンツ ノードが終了タグで、リーダーを次のノードに進めることを確認します。

System_CAPS_pubmethodReadInnerXml()

派生クラスでオーバーライドされると、マークアップを含むすべての内容を文字列として読み取ります。

System_CAPS_pubmethodReadInnerXmlAsync()

マークアップを含むすべてのコンテンツを文字列として非同期に読み取ります。

System_CAPS_pubmethodReadOuterXml()

派生クラスでオーバーライドされると、このノードとそのすべての子を表す内容 (マークアップを含む) を読み取ります。

System_CAPS_pubmethodReadOuterXmlAsync()

このノードとその子を表すコンテンツをマークアップを含めて非同期に読み取ります。

System_CAPS_pubmethodReadStartElement()

現在のノードが要素であるか調べ、リーダーを次のノードに進めます。

System_CAPS_pubmethodReadStartElement(String)

現在のコンテンツ ノードを持つ要素であることを確認、指定された Name 、リーダーを次のノードに進めます。

System_CAPS_pubmethodReadStartElement(String, String)

現在のコンテンツ ノードを持つ要素であることを確認、指定された LocalNameNamespaceURI 、リーダーを次のノードに進めます。

System_CAPS_pubmethodReadString()

派生クラスでオーバーライドされると、要素ノードまたはテキスト ノードの内容を文字列として読み取ります。 ただし、ことをお勧めを使用すること、 ReadElementContentAsString メソッド代わりに、この操作を処理するより簡単な方法を提供するためです。

System_CAPS_pubmethodReadSubtree()

新しい返します XmlReader インスタンスを使用して、現在のノードとそのすべての子孫を読み取ることができます。

System_CAPS_pubmethodReadToDescendant(String)

進めます、 XmlReader 指定した修飾名を持つ次の子孫要素にします。

System_CAPS_pubmethodReadToDescendant(String, String)

進めます、 XmlReader 指定されたローカル名と名前空間 URI の次の子孫要素にします。

System_CAPS_pubmethodReadToFollowing(String)

指定された修飾名の要素が見つかるまで読み込みます。

System_CAPS_pubmethodReadToFollowing(String, String)

指定されたローカル名と名前空間 URI が見つかるまで要素を読み込みます。

System_CAPS_pubmethodReadToNextSibling(String)

進めます、 XmlReader 指定した修飾名を持つ次の兄弟要素にします。

System_CAPS_pubmethodReadToNextSibling(String, String)

指定されたローカル名と名前空間 URI を使用して、XmlReader を次の兄弟要素に進めます。

System_CAPS_pubmethodReadValueChunk(Char[], Int32, Int32)

XML ドキュメントに埋め込まれたテキストの大量のストリームを読み込みます。

System_CAPS_pubmethodReadValueChunkAsync(Char[], Int32, Int32)

XML ドキュメントに埋め込まれたテキストの大量のストリームを非同期に読み取ります。

System_CAPS_pubmethodResolveEntity()

派生クラスでオーバーライドされると、解決のエンティティ参照を EntityReference ノードです。

System_CAPS_pubmethodSkip()

現在のノードの子をスキップします。

System_CAPS_pubmethodSkipAsync()

現在のノードの子を非同期にスキップします。

System_CAPS_pubmethodToString()

現在のオブジェクトを表す文字列を返します。(Object から継承されます。)

System_CAPS_noteメモ

この型の .NET Framework ソース コードを参照してください、 Reference Sourceします。 ソース コードをオンラインで参照、オフライン表示のリファレンスをダウンロードおよびデバッグ中にソース (パッチや更新を含む) をステップsee instructions.

XmlReader 文書またはストリームに XML データへの前方参照専用、読み取り専用のアクセスを提供します。 このクラスは、W3C に準拠している Extensible Markup Language (XML) 1.0 (fourth edition)Namespaces in XML 1.0 (third edition) の推奨事項です。

XmlReaderメソッドを使用して、XML データを移動し、ノードの内容を読み取ることができます。 クラスのプロパティは、これは、リーダーが配置されている現在のノードの値を反映します。 ReadState プロパティの値は、XML リーダーの現在の状態を示します。 プロパティを設定するなど、 Initial によって、 XmlReader.Read メソッドと Closed によって、 XmlReader.Close メソッドです。 XmlReader データ一致チェックし、DTD またはスキーマに対する検証も提供します。

XmlReaderプル モデルを使用して、データを取得します。 このモデルでは:

  • 自然で、上から下の洗練された手続きによって状態管理を簡略化します。

  • 複数の入力ストリームと階層化をサポートしています。

  • により、クライアントは、バッファーを提供する、パーサーは、文字列に直接書き込まれると、およびため文字列の余分なコピーの必要があります。

  • 選択的な処理をサポートします。 クライアントでは、項目をスキップでき、アプリケーションに関心のあるものを処理することができます。 (たとえば、"正規化")、XML ストリームを処理する方法を管理するには、事前にプロパティを設定することもできます。

このセクションの内容:

XML リーダーの作成
XML データの検証
データの一致
ノードを移動します。
読み取る XML 要素
読み取る XML 属性
読み取る XML コンテンツ
CLR 型に変換します。
非同期プログラミング
セキュリティの考慮事項

使用して、 Create を作成する方法、 XmlReaderインスタンス。

.NET Framework の具体的な実装を提供しますが、 XmlReader クラスなど、 XmlTextReader, 、XmlNodeReader, と XmlValidatingReader クラス、お勧め特化されたクラスは、これらのシナリオでのみ使用すること。

  • Readan XML DOM サブツリーをする場合、 XmlNode オブジェクトを使用して、 XmlNodeReader クラスです。 (ただし、このクラスはサポート DTD またはスキーマの検証)。

  • 要求のエンティティを展開する必要があります、たくない、テキスト コンテンツ正規化され、または既定の属性が返されるを使用しない場合、 XmlTextReader クラスです。

XML リーダーに有効に機能のセットを指定するには、渡す、 System.Xml.XmlReaderSettings オブジェクトを Create メソッドです。 1 つを使用する System.Xml.XmlReaderSettings オブジェクトを同じ機能を持つ複数のリーダーを作成または変更、 System.Xml.XmlReaderSettingsさまざまな機能セットを新たにリーダーを作成するオブジェクト。 機能は、既存のリーダーにも簡単に追加できます。

使用しない場合、System.Xml.XmlReaderSettingsオブジェクトの既定の設定を使用します。 参照してください、 Create 詳細ページを参照します。

XmlReader スローする XmlException XML の解析エラーを検出します。 例外がスローされると、リーダーの状態は予測できません。 たとえば、報告されたノード型は、現在のノードの実際のノード型とは異なる場合があります。 使用して、 ReadState リーダーがエラー状態であるかどうかを確認するプロパティです。

XML ドキュメントとその要素間のリレーションシップ、データ型、および内容の制約の構造を定義するには、ドキュメント型定義 (DTD) または XML スキーマ定義言語 (XSD) スキーマを使用します。 XML ドキュメントがによって定義されたすべての構文要件を満たしている場合は、適切な形式と見なされる、 W3C XML 1.0 Recommendationします。 整形式でも、DTD またはスキーマで定義されている制約に準拠している場合は有効になっています。 (を参照してください、 W3C XML Schema Part 1: StructuresW3C XML Schema Part 2: Datatypesの推奨事項です)。 したがって、有効な XML ドキュメントはすべて整形式ですが、整形式の XML ドキュメントがすべて有効であるとは限りません。

DTD では、インライン XSD スキーマに対してデータを検証するかに格納されている XSD スキーマ、 XmlSchemaSet オブジェクト (キャッシュ)。 これらのシナリオを参照して、 Create リファレンス ページです。 XmlReader Xml-data Reduced (XDR) スキーマ検証をサポートしていません。

次の設定を使用して、 XmlReaderSettings クラスが存在する場合、検証の種類を指定、XmlReader インスタンス化をサポートします。

これを使用して XmlReaderSettings メンバー

指定する型

DtdProcessing プロパティ

DTD 処理を許可するかどうか。 既定では、DTD 処理は許可されません。

ValidationType プロパティ

読者が、データを検証するかどうかと (DTD またはスキーマ) を実行する検証の種類。 既定では、データ検証は実行されません。

ValidationEventHandler イベント

検証イベントに関する情報を受信するためのイベント ハンドラー。 イベント ハンドラーが提供されていない場合は、最初の検証エラーに対して XmlException がスローされます。

ValidationFlags プロパティ

追加の検証のオプションから、 XmlSchemaValidationFlags 列挙型のメンバー。

  • AllowXmlAttributes-XML 属性を許可する (xml:*) これらしているスキーマで定義されていない場合でも、インスタンス ドキュメントにします。 属性は、そのデータ型に基づいて検証されます。参照してください、 XmlSchemaValidationFlags のリファレンス ページの特定のシナリオで使用する設定。 (既定では無効です。)

  • ProcessIdentityConstraints -Id 制約を処理する (xs:ID, 、xs:IDREF, 、xs:key, 、xs:keyref, 、xs:unique) の検証中に発生します。 (既定で有効になっている)。

  • ProcessSchemaLocation --で指定されたスキーマを処理する、 xsi:schemaLocation または xsi:noNamespaceSchemaLocation 属性です。 (既定で有効になっている)。

  • ProcessInlineSchema-検証中にインライン XML スキーマを処理します。 (既定では無効です。)

  • ReportValidationWarnings-検証の警告が発生した場合は、イベントを報告します。 警告は通常、特定の要素または属性を検証するための DTD または XML スキーマがない場合に発行されます。 通知には ValidationEventHandler が使用されます。 (既定では無効です。)

Schemas

検証に使用する XmlSchemaSet

XmlResolver プロパティ

XmlResolverを解決する外部のリソースにアクセスするためです。 DTD とスキーマ、およびそのいずれかなどの外部のエンティティを含むこの xs:include または xs:import XML スキーマに含まれる要素です。 指定しない場合、 XmlResolver, 、 XmlReader 、既定値を使用して XmlUrlResolver をユーザーの資格情報なし。

によって作成された XML リーダー、 Create methodmeet 既定では、次の準拠要件。

  • 新しい行および属性値が W3C に従って正規化された XML 1.0 Recommendationします。

  • すべてのエンティティが自動的に展開します。

  • ドキュメント型定義で宣言されている既定の属性は、リーダーを検証しない場合でも常に追加します。

  • 適切な XML 名前空間 URI に割り当てられた XML プレフィックスの宣言が許可されます。

  • 1 つの表記名 NotationType 属性宣言とNmTokens 1 つの Enumeration declarationare 個別の属性です。

これらを使用して XmlReaderSettings を有効にする準拠の型をチェックするように指定するプロパティ。

これを使用して XmlReaderSettings プロパティ

目的

既定

CheckCharacters プロパティ

有効または無効には、以下をチェックします。

  • 定義されている文字が有効な XML 文字の範囲内では、 2.2 Characters w3c 勧告 『 XML 1.0 勧告のセクションです。

  • 定義されているすべての XML 名が有効で、 2.3 Common Syntactic Constructs w3c 勧告 『 XML 1.0 勧告のセクションです。

このプロパティに設定すると true (既定値)、 XmlException XML ファイルには、無効な文字または無効な XML 名が含まれている場合に例外がスローされます (たとえば、要素名は、数字で始まる)。

文字と名前の確認が有効にします。

設定 CheckCharactersfalse 文字エン ティティ参照に対する文字のチェックをオフにします。 リーダーがテキスト データを処理している場合は、常に XML 名ではこの設定に関係なく、有効なことを確認します。

System_CAPS_noteメモ

XML 1.0 勧告では、DTD がある場合にはドキュメント レベルの一致が必要です。 そのため、リーダーがサポートするために構成されている場合 ConformanceLevel.Fragment, 、XML データには、ドキュメント型定義 (DTD) が含まれていますが、 XmlException がスローされます。

ConformanceLevel プロパティ

適用する準拠のレベルを選択します。

データに準拠していない場合は、 XmlException 例外がスローされます。

Document

現在のノードは、XML リーダーが配置されている現在 XML ノードです。 すべて XmlReaderメソッドは、このノードおよびすべての相関関係の操作を実行 XmlReaderプロパティは、現在のノードの値を反映します。

次の方法では、ノード間を移動し、データの解析が発生しやすいようにします。

これを使用して XmlReaderSettings メソッド

目的

Read

最初のノードを読み取るし、一度に 1 つのノードをストリームに進みます。 このような呼び出しが内で通常実行される、 while ループします。

使用して、 NodeType 現在のノードの種類 (たとえば、属性、コメント、要素、およびなど) を取得するプロパティです。

Skip

現在のノードの子をスキップし、次のノードに移動します。

MoveToContent および MoveToContentAsync

非コンテンツ ノードをスキップし、次のコンテンツ ノードまたはファイルの末尾に移動します。

非コンテンツ ノードが含まれて ProcessingInstruction, 、DocumentType, 、Comment, 、Whitespace, 、および SignificantWhitespaceです。

コンテンツ ノードには空白文字以外のテキスト、 CDATA, 、EntityReference , 、およびEndEntityです。

ReadSubtree

要素とそのすべての子要素を読み取り、返す、新しい XmlReader のインスタンスに設定 ReadState.Initialします。

このメソッドは XML 要素の周囲に境界線を作成するために役立ちますたとえば、別のコンポーネントで処理するためにデータを渡すし、データの量を制限する場合、コンポーネントはアクセスできます。

参照してください、 XmlReader.Read テキスト ストリームの 1 つのノードを一度に移動すると、各ノードの型を表示する例についてはページを参照します。

以降のセクションでは、特定の種類の要素、属性などのデータを読み取る方法について説明し、型指定されたデータ。

次の表は、メソッドとプロパティを XmlReader 要素を処理するクラスを提供します。 XmlReader が 1 つの要素上に位置した後、Name などのノードのプロパティには要素の値が反映されます。 下に説明するメンバーに加えて、XmlReader クラスの任意の一般メソッドとプロパティも要素の処理に使用できます。 たとえば、ReadInnerXml メソッドを使用して要素のコンテンツを読むことができます。

System_CAPS_noteメモ

3.1 章を参照、 W3C XML 1.0 Recommendation の開始タグの定義、タグ、および空要素タグを終了します。

これを使用して XmlReader メンバー

目的

IsStartElement メソッド

かどうか、現在のノードは開始タグまたは空要素タグを確認してください。

ReadStartElement メソッド

現在のノードが要素であることを確認し、リーダーを次のノードに進め (呼び出し IsStartElement 続けて Read)。

ReadEndElement メソッド

現在のノードが終了タグであることを確認し、次のノードに、リーダーを進めます。

ReadElementString メソッド

テキストのみの要素を読み取る。

ReadToDescendant メソッド

指定の名前を持つ次の子孫 (子) 要素に XML リーダーを進めます。

ReadToNextSibling メソッド

XML リーダーを指定の名前を持つ次の兄弟要素に進みます。

IsEmptyElement プロパティ

現在の要素に終了要素タグを確認します。 例:

  • <item num="123"/> (IsEmptyElementtrue)。

  • <item num="123"> </item> (IsEmptyElementfalse, 要素のコンテンツは空には)。

要素のテキストの内容を読み取り中の例は、次を参照してください。、 ReadString メソッドです。 次の例では、要素を処理を使用して、 while ループします。

while (reader.Read()) {
  if (reader.IsStartElement()) {
    if (reader.IsEmptyElement)
      Console.WriteLine("<{0}/>", reader.Name);
    else {
      Console.Write("<{0}> ", reader.Name);
      reader.Read(); // Read the start tag.
      if (reader.IsStartElement())  // Handle nested elements.
        Console.Write("\r\n<{0}>", reader.Name);
      Console.WriteLine(reader.ReadString());  //Read the text content of the element.
    }
  } 
} 

XML 属性は、要素に最もよくあるが、XML 宣言やドキュメント型ノードにも許可されています。

要素ノードに配置されているときに、 MoveToAttribute メソッドを使用して、要素の属性リストを移動できます。 注意してください MoveToAttribute が呼び出されると、ノードのプロパティなど、 Name, 、NamespaceURI, 、および Prefix その属性のプロパティを反映して、対象は、要素、属性のプロパティではありません。

XmlReader クラスには、これらのメソッドとプロパティを読み取って処理要素の属性が用意されています。

これを使用して XmlReader メンバー

目的

HasAttributes プロパティ

現在のノードが属性を持っているかどうかを確認してください。

AttributeCount プロパティ

現在の要素に属性の数を取得します。

MoveToFirstAttribute メソッド

要素内の最初の属性に移動します。

MoveToNextAttribute メソッド

要素の次の属性に移動します。

MoveToAttribute メソッド

指定した属性に移動します。

GetAttribute メソッドまたは Item プロパティ

指定した属性の値を取得します。

IsDefault プロパティ

現在のノードが DTD またはスキーマで定義された既定値から生成された属性であるかどうかを確認します。

MoveToElement メソッド

現在の属性を所有している要素に移動します。 このメソッドを使用して、その属性間を移動後に要素を返します。

ReadAttributeValue メソッド

1 つまたは複数を属性値を解析 Text, 、EntityReference, 、または EndEntityノードです。

一般の XmlReader のメソッドとプロパティもすべて属性の処理に使用できます。 たとえば、XmlReader が属性上に位置した後、Name および Value のプロパティは、その属性の値を反映します。 コンテンツの Read メソッドも属性の値を取得するために使用できます。

この例では、 AttributeCount プロパティ要素のすべての属性間を移動します。

// Display all attributes.
if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  for (int i = 0; i < reader.AttributeCount; i++) {
    Console.WriteLine("  {0}", reader[i]);
  }
  // Move the reader back to the element node.
  reader.MoveToElement(); 
}

この例では、 MoveToNextAttribute メソッドで、 while ループを使用して、属性間を移動します。

if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  while (reader.MoveToNextAttribute()) {
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value);
  }
  // Move the reader back to the element node.
  reader.MoveToElement();
}

XML 宣言ノードの属性の読み取り

XML リーダーが、XML 宣言ノードに配置されているときに、 Value プロパティは、バージョン、スタンドアロン、および 1 つの文字列としてエンコード情報を返します。 XmlReader によって作成されたオブジェクト、 Create 、メソッド、 XmlTextReader クラス、および XmlValidatingReaderクラスは、バージョン、スタンドアロン、およびエンコーディング情報を属性として公開します。

ドキュメント型ノードの属性の読み取り

XML リーダーの位置は、ドキュメント型ノードにある場合、 GetAttribute メソッドと Item SYSTEM および PUBLIC リテラルの値を返すプロパティを使用できます。 たとえば、reader.GetAttribute("PUBLIC") は PUBLIC の値を返します。

処理命令ノードの属性の読み取り

XmlReader が処理命令ノード上に位置しているとき、Value プロパティはテキストの内容全体を返します。 処理命令ノード内の項目は、属性として扱われます。 読み取れない、 GetAttribute または MoveToAttribute メソッドです。

XMLReader クラスには、XML ファイルからコンテンツの読み取りし、文字列の値として内容を取得する次のメンバーが含まれています。 (CLR 型を返すを参照してください、 次のセクション.)

これを使用して XmlReader メンバー

目的

Value プロパティ

現在のノードのテキストの内容を取得します。 返される値は、ノードの種類によって異なります。参照してください、 Value 詳細ページを参照します。

ReadString メソッド

要素またはテキスト ノードのコンテンツを文字列として取得します。 このメソッドは、処理命令とコメントを停止します。

このメソッドが特定のノード型を処理する方法の詳細については、「、 ReadString リファレンス ページです。

ReadInnerXml メソッドおよび ReadInnerXmlAsync メソッド

開始と終了タグを除く、マークアップを含む、現在のノードのすべてのコンテンツを取得します。 たとえば。

<node>this<child id="123"/></node>

ReadInnerXml 返します。

this<child id="123"/>

ReadOuterXml メソッドおよび ReadOuterXmlAsync メソッド

現在のノードとその子のマークアップと開始/終了タグを含むすべてのコンテンツを取得します。 たとえば。

<node>this<child id="123"/></node>

ReadOuterXml 返します。

<node>this<child id="123"/></node>

メンバーを使用して、 XmlReader クラス (次の表に記載) XML データを読み取り、文字列ではなくランタイム (CLR) 型の共通言語としての値を返します。 これらのメンバーでは、手動で解析または文字列の値に変換することがなく、コーディング作業に最適な表現で値を取得できます。

  • ReadElementContentAs のメソッドは、要素ノード型でのみ呼び出すことができます。 これらのメソッドは、子要素または混合コンテンツを含む要素では使用できません。 呼ばれると、XmlReader オブジェクトは開始タグと要素コンテンツと読み、その後、終了要素タグを越えて移動します。 処理命令とコメントは無視され、エンティティは展開されます。

  • ReadContentAsメソッドは、現在のリーダーの位置でテキストの内容を読み取るし、スキーマやデータ型に、関連付けられている情報を XML データとして使用することがない場合は、テキストの内容を要求された戻り値の型に変換します。 テキスト、空白、有意の空白、および CDATA セクションは連結されます。 コメントおよび処理命令をスキップし、エンティティ参照は自動的に解決します。

XmlReader クラスによって定義されたルールを使用して、 W3C XML Schema Part 2: Datatypes推奨します。

これを使用して XmlReaderメソッド

この CLR 型を取得するには

ReadContentAsBoolean および ReadElementContentAsBoolean

Boolean

ReadContentAsDateTime および ReadElementContentAsDateTime

DateTime

ReadContentAsDouble および ReadElementContentAsDouble

Double

ReadContentAsLong および ReadElementContentAsLong

Int64

ReadContentAsInt および ReadElementContentAsInt

Int32

ReadContentAsString および ReadElementContentAsString

String

ReadContentAs および ReadElementContentAs

指定した種類の returnType パラメーター

ReadContentAsObject および ReadElementContentAsObject

指定したとおり、最も適切な型、 XmlReader.ValueType プロパティです。 参照してください System.Xml クラスでの型のサポート 情報をマップします。

要素は、その形式は CLR 型を簡単に変換できない場合、は、変換に成功したことを確認するスキーマ マッピングを使用することができます。 次の例では、.xsd ファイルを使用して、変換、 hire-date 要素を xs:date の種類、使用して、 ReadElementContentAsDateTime として要素を返すメソッド、 DateTime オブジェクトです。

入力 (hireDate.xml):

<employee xmlns="urn:empl-hire">
    <ID>12365</ID>
    <hire-date>2003-01-08</hire-date>
    <title>Accountant</title>
</employee>

スキーマ (hireDate.xsd):

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:empl-hire" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="employee">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ID" type="xs:unsignedShort" />
        <xs:element name="hire-date" type="xs:date" />
        <xs:element name="title" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

コードに示します。

// Create a validating XmlReader object. The schema 
// provides the necessary type information.
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.Schema;
settings.Schemas.Add("urn:empl-hire", "hireDate.xsd");
using (XmlReader reader = XmlReader.Create("hireDate.xml", settings)) {

  // Move to the hire-date element.
  reader.MoveToContent();
  reader.ReadToDescendant("hire-date");

  // Return the hire-date as a DateTime object.
  DateTime hireDate = reader.ReadElementContentAsDateTime();
  Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6));
}

Output:

Six Month Review Date:  7/8/2003 12:00:00 AM

ほとんどの XmlReader メソッドをメソッド名の末尾に"Async"を持つ対応する非同期があります。 たとえば、非同期と同等の ReadContentAsObjectReadContentAsObjectAsyncです。

次のメソッドは、非同期メソッド呼び出しで使用できます。

次のセクションでは、対応する非同期がインストールされていないメソッドの非同期の使用状況について説明します。

ReadStartElement メソッド

public static async Task ReadStartElementAsync(this XmlReader reader, string localname, string ns)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.Element)
    {
        throw new InvalidOperationException(reader.NodeType.ToString() + " is an invalid XmlNodeType");
    }
    if ((reader.LocalName == localname) && (reader.NamespaceURI == ns))
    {
        await reader.ReadAsync();
    }
    else
    {
        throw new InvalidOperationException("localName or namespace doesn’t match");
    }
}

ReadEndElement メソッド

public static async Task ReadEndElementAsync(this XmlReader reader)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.EndElement)
    {
        throw new InvalidOperationException();
    }
    await reader.ReadAsync();
}

ReadToNextSibling メソッド

public static async Task<bool> ReadToNextSiblingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the next sibling
    XmlNodeType nt;
    do
    {
        await reader.SkipAsync();
        if (reader.ReadState != ReadState.Interactive)
            break;
        nt = reader.NodeType;
        if (nt == XmlNodeType.Element &&
             ((object)localName == (object)reader.LocalName) &&
             ((object)namespaceURI ==(object)reader.NamespaceURI))
        {
            return true;
        }
    } while (nt != XmlNodeType.EndElement && !reader.EOF);

    return false;
}

ReadToFollowing メソッド

public static async Task<bool> ReadToFollowingAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find element with that name
    while (await reader.ReadAsync())
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}

ReadToDescendant メソッド

public static async Task<bool> ReadToDescendantAsync(this XmlReader reader, string localName, string namespaceURI)
{
    if (localName == null || localName.Length == 0)
    {
        throw new ArgumentException("localName is empty or null");
    }
    if (namespaceURI == null)
    {
        throw new ArgumentNullException("namespaceURI");
    }
    // save the element or root depth
    int parentDepth = reader.Depth;
    if (reader.NodeType != XmlNodeType.Element)
    {
        // adjust the depth if we are on root node
        if (reader.ReadState == ReadState.Initial)
        {
            parentDepth--;
        }
        else
        {
            return false;
        }
    }
    else if (reader.IsEmptyElement)
    {
        return false;
    }

    // atomize local name and namespace
    localName = reader.NameTable.Add(localName);
    namespaceURI = reader.NameTable.Add(namespaceURI);

    // find the descendant
    while (await reader.ReadAsync() && reader.Depth > parentDepth)
    {
        if (reader.NodeType == XmlNodeType.Element && ((object)localName == (object)reader.LocalName) && ((object)namespaceURI == (object)reader.NamespaceURI))
        {
            return true;
        }
    }
    return false;
}

使用する場合は、以下を検討してください、 XmlReader クラス。

  • スローされた例外、 XmlReader アプリに送られたくないパス情報を開示することができます。 アプリは、例外をキャッチして、適切に処理する必要があります。

  • サービス拒否の問題を心配している場合、または信頼されていないソースを扱う場合は、DTD 処理を有効にしません。 既定では DTD の処理が無効になっている XmlReader によって作成されたオブジェクト、 Create メソッドです。

    DTD 処理を有効にした場合、XmlSecureResolver を使用して XmlReader でアクセス可能なリソースを制限できます。 XML 処理に対するメモリと時間制限できるように、アプリを設計することもできます。 たとえば、ASP.NET アプリケーションでタイムアウト制限を構成できます。

  • XML データには、スキーマ ファイルなど、外部リソースへの参照が含まれることがあります。 使用して既定では、外部リソースの解決、 XmlUrlResolver ユーザー資格情報を持つオブジェクト。 この点については、次のいずれかの方法でセキュリティを強化できます。

  • ProcessInlineSchemaProcessSchemaLocation の検証フラグ、 XmlReaderSettings オブジェクトが既定で設定されていません。 このことは、信頼できないソースからの XML データを処理する際に、スキーマ ベースの攻撃から XmlReader を保護するのに役立ちます。 これらのフラグが設定されていると、XmlResolver オブジェクトの XmlReaderSettingsXmlReader のインスタンス ドキュメント中に出現したスキーマの場所を解決するために使用されます。 場合、 XmlResolver プロパティに設定されて null, 、スキーマの場所が解決されない場合でも、 ProcessInlineSchemaProcessSchemaLocation 検証フラグが設定されます。

    検証を実行しているときにスキーマを追加すると新しい型が追加されるため、検証しているドキュメントの検証結果を変えることができます。 結果として、信頼できるソースからの外部スキーマだけが解決されるようにする必要があります。

    無効にすることをお勧めします ProcessIdentityConstraints をドキュメントの大きな部分 id 制約を持つスキーマに対して高可用性のシナリオでの信頼されていない系の大規模な XML ドキュメントを検証するときにフラグを設定します。 このフラグは、既定で有効にします。

  • XML データには、処理に長時間を要する大量の属性、名前空間宣言、入れ子になった要素などが含まれることがあります。 送信される入力のサイズを制限する、 XmlReader, 、ことができます。

    • 設定して、ドキュメントのサイズを制限、 MaxCharactersInDocument プロパティです。

    • エンティティの展開の設定により生成される文字数を制限、 MaxCharactersFromEntities プロパティです。

    • カスタム作成 IStream の実装、 XmlReaderです。

  • ReadValueChunk メソッドは、大量のデータ ストリームを処理するために使用できます。 このメソッドは、値全体に 1 つの文字列を割り当てる代わりに、一度に少数の文字を読みます。

  • 多数の一意のローカル名、名前空間、またはプレフィックスを持つ XML ドキュメントを読み取るときに問題が発生することができます。 派生したクラスを使用している場合 XmlReader, を呼び出すと、 LocalName, 、Prefix, 、または NamespaceURI プロパティが各項目に返される文字列が追加、 NameTableです。 保持するコレクション、 NameTable サイズは、文字列ハンドルの仮想メモリ リークを作成することはありませんが減少します。 これがから派生するには、 NameTable クラスし、最大サイズ クォータを適用します。 (の使用を回避する方法はありません、 NameTable, を切り替えたり、 NameTable それがいっぱいのとき)。 別の軽減は、前述のプロパティを使用しないで、代わりに使用する、 MoveToAttribute メソッドを IsStartElement メソッド; 可能な限りこれらのメソッドしない文字列を返すし、あふれてしまう問題を回避、 NameTable コレクションです。

  • XmlReaderSettings オブジェクトはユーザー資格情報など、重要な情報を含むことがあります。 信頼できないコンポーネントが XmlReaderSettings オブジェクトとそのユーザー資格情報を使用して、XmlReader オブジェクトを作成し、データを読む可能性があります。 キャッシュする場合は注意が必要 XmlReaderSettings オブジェクトを渡すときや、 XmlReaderSettings オブジェクト 1 つのコンポーネントです。

  • 信頼できないソースからの NameTableXmlNamespaceManager、および XmlResolver オブジェクトなどのサポート コンポーネントは受け入れないようにします。

次のコード例では、非同期の parse XML を使用する方法を示します。

async Task TestReader(System.IO.Stream stream)
{
    XmlReaderSettings settings = new XmlReaderSettings();
    settings.Async = true;

    using (XmlReader reader = XmlReader.Create(stream, settings))
    {
        while (await reader.ReadAsync())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    Console.WriteLine("Start Element {0}", reader.Name);
                    break;
                case XmlNodeType.Text:
                    Console.WriteLine("Text Node: {0}",
                             await reader.GetValueAsync());
                    break;
                case XmlNodeType.EndElement:
                    Console.WriteLine("End Element {0}", reader.Name);
                    break;
                default:
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value);
                    break;
            }
        }
    }
}

ユニバーサル Windows プラットフォーム
8 以降で使用可能
.NET Framework
1.1 以降で使用可能
ポータブル クラス ライブラリ
サポート対象: 移植可能 .NET プラットフォーム
Silverlight
2.0 以降で使用可能
Windows Phone Silverlight
7.0 以降で使用可能
Windows Phone
8.1 以降で使用可能

この型のパブリック static (Visual Basic では Shared ) メンバーはスレッド セーフです。インスタンス メンバーの場合は、スレッド セーフであるとは限りません。

トップに戻る
表示: