XmlReader クラス

定義

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

public ref class XmlReader abstract : IDisposable
public ref class XmlReader abstract
public abstract class XmlReader : IDisposable
public abstract class XmlReader
type XmlReader = class
    interface IDisposable
type XmlReader = class
Public MustInherit Class XmlReader
Implements IDisposable
Public MustInherit Class XmlReader
継承
XmlReader
派生
実装

次のコード例は、非同期 API を使用して 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;
            }
        }
    }
}
Public Async Function TestReader(stream As System.IO.Stream) As Task
    Dim settings As New XmlReaderSettings()
    settings.Async = True

    Using reader As XmlReader = XmlReader.Create(stream, settings)
        While (Await reader.ReadAsync())
            Select Case (reader.NodeType)
                Case XmlNodeType.Element
                    Console.WriteLine("Start Element {0}", reader.Name)
                Case XmlNodeType.Text
                    Console.WriteLine("Text Node: {0}",
                             Await reader.GetValueAsync())
                Case XmlNodeType.EndElement
                    Console.WriteLine("End Element {0}", reader.Name)
                Case Else
                    Console.WriteLine("Other node {0} with value {1}",
                                    reader.NodeType, reader.Value)
            End Select
        End While
    End Using
End Function

注釈

XmlReader は、ドキュメントまたはストリーム内の XML データへの前方専用の読み取り専用アクセスを提供します。 このクラスは、W3C Extensible Markup Language (XML) 1.0 (第 4 エディション) および XML 1.0 (第 3 エディション) の名前空間 に関する推奨事項に準拠しています。

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

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

  • 自然なトップダウンの手続き型絞り込みによって、状態管理を簡略化します。

  • 複数の入力ストリームとレイヤーをサポートします。

  • クライアントがパーサーに、文字列が直接書き込まれるバッファーを提供できるようにします。そのため、追加の文字列コピーが不要になります。

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

このセクションの内容:

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

XML リーダーの作成

インスタンスを作成するには、 Create メソッドを XmlReader 使用します。

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

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

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

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

オブジェクトを使用しない場合は System.Xml.XmlReaderSettings 、既定の設定が使用されます。 詳細については、 Create リファレンス ページを参照してください。

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

XML データの検証

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

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

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

このメンバーを使用するXmlReaderSettings 指定する型
DtdProcessing プロパティ DTD 処理を許可するかどうか。 既定では、DTD 処理は許可されません。
ValidationType プロパティ 閲覧者がデータを検証するかどうか、および実行する検証の種類 (DTD またはスキーマ)。 既定では、データ検証は実行されません。
ValidationEventHandler イベント 検証イベントに関する情報を受信するためのイベント ハンドラー。 イベント ハンドラーが提供されていない場合は、最初の検証エラーに対して XmlException がスローされます。
ValidationFlags プロパティ 列挙メンバーを使用した追加の XmlSchemaValidationFlags 検証オプション:

- AllowXmlAttributes-- スキーマで定義されていない場合でも、インスタンス ドキュメントで XML 属性 (xml:*) を許可します。 これらの属性は、それらのデータ型に基づいて検証されます。 特定の XmlSchemaValidationFlags シナリオで使用する設定については、リファレンス ページを参照してください。 (既定では無効です)。
- ProcessIdentityConstraints--検証中に発生した ID 制約 (xs:ID、、xs:IDREFxs:keyxs:keyrefxs:unique) を処理します。 (既定で有効)。
- ProcessSchemaLocation--または xsi:noNamespaceSchemaLocation 属性で指定されたスキーマをxsi:schemaLocation処理します。 (既定で有効)。
- ProcessInlineSchema-- 検証中にインライン XML スキーマを処理します。 (既定では無効です)。
- ReportValidationWarnings--検証の警告が発生した場合にイベントを報告します。 警告は通常、特定の要素または属性を検証するための DTD または XML スキーマがない場合に発行されます。 通知には ValidationEventHandler が使用されます。 (既定では無効です)。
Schemas 検証に使用する XmlSchemaSet
XmlResolver プロパティ XmlResolver外部リソースを解決してアクセスするための 。 これには、DTD やスキーマなどの外部エンティティや、XML スキーマに含まれる要素 xs:include または xs:import 要素を含めることができます。 をXmlResolverXmlReader指定しない場合、 では、ユーザー資格情報のない既定値が使用されますXmlUrlResolver

データの準拠

メソッドによって作成される XML リーダーは、既定で Create 次のコンプライアンス要件を満たしています。

  • 新しい行と属性値は、W3C XML 1.0 の推奨事項に従って正規化されます。

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

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

  • 正しい XML 名前空間 URI にマップされた XML プレフィックスの宣言が許可されます。

  • 1 つの属性宣言と NmTokens 1 つのNotationType属性宣言のEnumeration表記名は異なります。

有効にする準拠チェックの種類を指定するには、次 XmlReaderSettings のプロパティを使用します。

このプロパティを使用するXmlReaderSettings 終了 Default
CheckCharacters プロパティ 次のチェックを有効または無効にします。

- 文字は、W3C XML 1.0 の推奨事項の 2.2 文字 セクションで定義されているように、有効な XML 文字の範囲内です。
- W3C XML 1.0 の推奨事項の 2.3 Common Syntactic Constructs セクションで定義されているように、すべての XML 名が有効です。

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

CheckCharactersfalse に設定すると、文字エンティティ参照に対する文字のチェック機能がオフになります。 リーダーがテキスト データを処理している場合は、この設定に関係なく、常に XML 名が有効であることを確認します。 メモ: XML 1.0 の推奨事項では、DTD が存在する場合にドキュメント レベルの準拠が必要です。 したがって、リーダーが をサポート ConformanceLevel.Fragmentするように構成されているが、XML データにドキュメント型定義 (DTD) が含まれている場合は、 XmlException がスローされます。
ConformanceLevel プロパティ 適用する準拠レベルを選択します。

- Document. 整形式の XML 1.0 ドキュメントの規則に準拠しています。
- Fragment. 外部解析エンティティとして使用できる整形式のドキュメント フラグメントの規則に準拠します。
- Auto.リーダーによって決定されたレベルに準拠します。

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

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

次のメソッドを使用すると、ノード間を簡単に移動してデータを解析できます。

このメソッドを使用するXmlReaderSettings 終了
Read 最初のノードを読み取り、ストリームを 1 ノードずつ進めます。 このような呼び出しは、通常、ループ内で while 実行されます。

プロパティを NodeType 使用して、現在のノードの型 (属性、コメント、要素など) を取得します。
Skip 現在のノードの子をスキップし、次のノードに移動します。
MoveToContent および MoveToContentAsync 非コンテンツ ノードをスキップし、次のコンテンツ ノードまたはファイルの末尾に移動します。

コンテンツ以外のノードには、、、DocumentTypeCommentWhitespace、および がSignificantWhitespace含まれますProcessingInstruction

コンテンツ ノードには、空白以外のテキスト、 CDATAEntityReference および EndEntityが含まれます。
ReadSubtree 要素とそのすべての子を読み取り、 に設定された新 XmlReader しいインスタンスを ReadState.Initial返します。

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

テキスト ストリーム内を XmlReader.Read 一度に 1 ノードずつ移動し、各ノードの種類を表示する例については、リファレンス ページを参照してください。

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

XML 要素の読み取り

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

注意

開始タグ、終了タグ、空の要素タグの定義については、 W3C XML 1.0 の推奨事項のセクション 3.1 を参照してください。

このメンバーを使用するXmlReader 終了
IsStartElement メソッド 現在のノードが開始タグか空の要素タグかどうかを確認します。
ReadStartElement メソッド 現在のノードが 要素であることを確認し、リーダーを次のノードに進めます (その後に Readを呼び出IsStartElementします)。
ReadEndElement メソッド 現在のノードが終了タグであることを確認し、リーダーを次のノードに進めます。
ReadElementString メソッド テキストのみの要素を読み取る。
ReadToDescendant メソッド 指定した名前を持つ次の子孫 (子) 要素に XML リーダーを進めます。
ReadToNextSibling メソッド 指定した名前を持つ次の兄弟要素に XML リーダーを進めます。
IsEmptyElement プロパティ 現在の要素に終了要素タグがあるかどうかを確認します。 次に例を示します。

- <item num="123"/> (IsEmptyElementtrueです)。
- <item num="123"> </item> (IsEmptyElement は です false。ただし、要素の内容は空です)。)

要素のテキスト コンテンツを読み取る例については、 メソッドを 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.
    }
  }
}
While reader.Read()
  If reader.IsStartElement() Then
    If reader.IsEmptyElement Then
      Console.WriteLine("<{0}/>", reader.Name)
    Else
      Console.Write("<{0}> ", reader.Name)
      reader.Read() ' Read the start tag.
      If reader.IsStartElement() Then ' Handle nested elements.
        Console.Write(vbCr + vbLf + "<{0}>", reader.Name)
      End If
      Console.WriteLine(reader.ReadString()) 'Read the text content of the element.
    End If
  End If
End While

XML 属性の読み取り

XML 属性は要素で最もよく見られますが、XML 宣言ノードとドキュメント型ノードでも使用できます。

要素ノードに配置すると、 メソッドを MoveToAttribute 使用すると、要素の属性リストを確認できます。 が呼び出された後MoveToAttribute、、 などのNameNamespaceURIPrefixノード プロパティには、属性が属する要素のプロパティではなく、その属性のプロパティが反映されることに注意してください。

クラスは 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();
}
' Display all attributes.
If reader.HasAttributes Then
  Console.WriteLine("Attributes of <" + reader.Name + ">")
  Dim i As Integer
  For i = 0 To (reader.AttributeCount - 1)
    Console.WriteLine("  {0}", reader(i))
  Next i
  ' Move the reader back to the element node.
  reader.MoveToElement() 
End If

この例では、 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();
}
If reader.HasAttributes Then
  Console.WriteLine("Attributes of <" + reader.Name + ">")
  While reader.MoveToNextAttribute()
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value)
  End While
  ' Move the reader back to the element node.
  reader.MoveToElement()
End If

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

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

ドキュメントの種類のノードでの属性の読み取り

XML リーダーがドキュメント型ノードに配置されている場合、 メソッドと プロパティを GetAttribute 使用して、SYSTEM リテラルと Item[] PUBLIC リテラルの値を返すことができます。 たとえば、reader.GetAttribute("PUBLIC") は PUBLIC の値を返します。

命令ノードの処理に関する属性の読み取り

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

XML コンテンツの読み取り

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>

CLR 型への変換

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

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

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

クラスはXmlReader、W3C XML スキーマ パート 2: データ型に関する推奨事項で定義されている規則を使用します。

このメソッドを使用する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));
}
' Create a validating XmlReader object. The schema 
' provides the necessary type information.
Dim settings As XmlReaderSettings = New XmlReaderSettings()
settings.ValidationType = ValidationType.Schema
settings.Schemas.Add("urn:empl-hire", "hireDate.xsd")
Using reader As XmlReader = 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.
  Dim hireDate As DateTime = reader.ReadElementContentAsDateTime()
  Console.WriteLine("Six Month Review Date: {0}", hireDate.AddMonths(6))
End Using

出力:

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

非同期プログラミング

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

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

次のセクションでは、対応する非同期メソッドがないメソッドの非同期使用について説明します。

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");
    }
}
<Extension()>
Public Async Function ReadStartElementAsync(reader As XmlReader, localname As String, ns As String) As Task
    If (Await reader.MoveToContentAsync() <> XmlNodeType.Element) Then
        Throw New InvalidOperationException(reader.NodeType.ToString() + " is an invalid XmlNodeType")
    End If

    If ((reader.LocalName = localname) And (reader.NamespaceURI = ns)) Then
        Await reader.ReadAsync()
    Else
        Throw New InvalidOperationException("localName or namespace doesn’t match")
    End If
End Function

ReadEndElement メソッド

public static async Task ReadEndElementAsync(this XmlReader reader)
{
    if (await reader.MoveToContentAsync() != XmlNodeType.EndElement)
    {
        throw new InvalidOperationException();
    }
    await reader.ReadAsync();
}
<Extension()>
Public Async Function ReadEndElementAsync(reader As XmlReader) As task
    If (Await reader.MoveToContentAsync() <> XmlNodeType.EndElement) Then
        Throw New InvalidOperationException()
    End If
    Await reader.ReadAsync()
End Function

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;
}
<Extension()>
Public Async Function ReadToNextSiblingAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

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

    ' find the next sibling
    Dim nt As XmlNodeType
    Do

        Await reader.SkipAsync()
        If (reader.ReadState <> ReadState.Interactive) Then
            Exit Do
        End If
        nt = reader.NodeType
        If ((nt = XmlNodeType.Element) And
           ((CObj(localName) = CObj(reader.LocalName))) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    Loop While (nt <> XmlNodeType.EndElement And (Not reader.EOF))

    Return False

End Function

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;
}
<Extension()>
Public Async Function ReadToFollowingAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' 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) And
           (CObj(localName) = CObj(reader.LocalName)) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    End While

    Return False
End Function

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;
}
<Extension()>
Public Async Function ReadToDescendantAsync(reader As XmlReader, localName As String, namespaceURI As String) As Task(Of Boolean)
    If (localName = Nothing Or localName.Length = 0) Then
        Throw New ArgumentException("localName is empty or null")
    End If

    If (namespaceURI = Nothing) Then
        Throw New ArgumentNullException("namespaceURI")
    End If

    ' save the element or root depth
    Dim parentDepth As Integer = reader.Depth
    If (reader.NodeType <> XmlNodeType.Element) Then
        ' adjust the depth if we are on root node
        If (reader.ReadState = ReadState.Initial) Then
            parentDepth -= 1
        Else
            Return False
        End If
    ElseIf (reader.IsEmptyElement) Then
        Return False
    End If
    ' atomize local name and namespace
    localName = reader.NameTable.Add(localName)
    namespaceURI = reader.NameTable.Add(namespaceURI)

    ' find the descendant
    While (Await reader.ReadAsync() And reader.Depth > parentDepth)
        If (reader.NodeType = XmlNodeType.Element And
           (CObj(localName) = CObj(reader.LocalName)) And
           (CObj(namespaceURI) = CObj(reader.NamespaceURI))) Then
            Return True
        End If
    End While

    Return False
End Function

セキュリティの考慮事項

クラスを操作する場合は、次の点を考慮してください XmlReader

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

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

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

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

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

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

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

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

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

    • プロパティを設定して、エンティティを展開した結果の文字数を MaxCharactersFromEntities 制限します。

    • のカスタム IStream 実装を作成します XmlReader

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

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

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

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

コンストラクター

XmlReader()

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

プロパティ

AttributeCount

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

BaseURI

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

CanReadBinaryContent

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

CanReadValueChunk

XmlReaderReadValueChunk(Char[], Int32, Int32) メソッドを実装しているかどうかを示す値を取得します。

CanResolveEntity

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

Depth

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

EOF

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

HasAttributes

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

HasValue

派生クラスでオーバーライドされると、現在のノードが Value を持つことができるかどうかを示す値を取得します。

IsDefault

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

IsEmptyElement

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

Item[Int32]

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

Item[String, String]

派生クラスでオーバーライドされると、指定した LocalName および NamespaceURI の属性の値を取得します。

Item[String]

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

LocalName

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

Name

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

NamespaceURI

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

NameTable

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

NodeType

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

Prefix

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

QuoteChar

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

ReadState

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

SchemaInfo

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

Settings

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

Value

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

ValueType

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

XmlLang

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

XmlSpace

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

メソッド

Close()

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

Create(Stream)

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

Create(Stream, XmlReaderSettings)

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

Create(Stream, XmlReaderSettings, String)

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

Create(Stream, XmlReaderSettings, XmlParserContext)

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

Create(String)

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

Create(String, XmlReaderSettings)

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

Create(String, XmlReaderSettings, XmlParserContext)

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

Create(TextReader)

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

Create(TextReader, XmlReaderSettings)

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

Create(TextReader, XmlReaderSettings, String)

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

Create(TextReader, XmlReaderSettings, XmlParserContext)

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

Create(XmlReader, XmlReaderSettings)

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

Dispose()

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

Dispose(Boolean)

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

Equals(Object)

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

(継承元 Object)
GetAttribute(Int32)

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

GetAttribute(String)

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

GetAttribute(String, String)

派生クラスでオーバーライドされると、指定した LocalName および NamespaceURI の属性の値を取得します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
GetValueAsync()

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

IsName(String)

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

IsNameToken(String)

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

IsStartElement()

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

IsStartElement(String)

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

IsStartElement(String, String)

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

LookupNamespace(String)

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

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
MoveToAttribute(Int32)

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

MoveToAttribute(String)

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

MoveToAttribute(String, String)

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

MoveToContent()

現在のノードがコンテンツ (空白でないテキスト、CDATAElementEndElementEntityReference、または EndEntity) ノードかどうかを確認します。 ノードがコンテンツ ノードでない場合、リーダーは、次のコンテンツ ノードまたはファイルの末尾までスキップします。 リーダーは、ProcessingInstructionDocumentTypeCommentWhitespace、または SignificantWhitespace の型のノードをスキップします。

MoveToContentAsync()

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

MoveToElement()

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

MoveToFirstAttribute()

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

MoveToNextAttribute()

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

Read()

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

ReadAsync()

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

ReadAttributeValue()

派生クラスでオーバーライドされると、属性値を解析して、1 つ以上の TextEntityReference、または EndEntity の各ノードに格納します。

ReadContentAs(Type, IXmlNamespaceResolver)

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

ReadContentAsAsync(Type, IXmlNamespaceResolver)

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

ReadContentAsBase64(Byte[], Int32, Int32)

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

ReadContentAsBase64Async(Byte[], Int32, Int32)

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

ReadContentAsBinHex(Byte[], Int32, Int32)

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

ReadContentAsBinHexAsync(Byte[], Int32, Int32)

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

ReadContentAsBoolean()

現在の位置でテキスト コンテンツを Boolean として読み取ります。

ReadContentAsDateTime()

現在の位置でテキスト コンテンツを DateTime オブジェクトとして読み取ります。

ReadContentAsDateTimeOffset()

現在の位置でテキスト コンテンツを DateTimeOffset オブジェクトとして読み取ります。

ReadContentAsDecimal()

現在の位置でテキスト コンテンツを Decimal オブジェクトとして読み取ります。

ReadContentAsDouble()

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

ReadContentAsFloat()

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

ReadContentAsInt()

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

ReadContentAsLong()

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

ReadContentAsObject()

現在の位置でテキスト コンテンツを Object として読み取ります。

ReadContentAsObjectAsync()

現在の位置でテキスト コンテンツを Object として非同期に読み取ります。

ReadContentAsString()

現在の位置でテキスト コンテンツを String オブジェクトとして読み取ります。

ReadContentAsStringAsync()

現在の位置でテキスト コンテンツを String オブジェクトとして非同期に読み取ります。

ReadElementContentAs(Type, IXmlNamespaceResolver)

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

ReadElementContentAs(Type, IXmlNamespaceResolver, String, String)

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

ReadElementContentAsAsync(Type, IXmlNamespaceResolver)

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

ReadElementContentAsBase64(Byte[], Int32, Int32)

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

ReadElementContentAsBase64Async(Byte[], Int32, Int32)

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

ReadElementContentAsBinHex(Byte[], Int32, Int32)

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

ReadElementContentAsBinHexAsync(Byte[], Int32, Int32)

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

ReadElementContentAsBoolean()

現在の要素を読み取り、そのコンテンツを Boolean オブジェクトとして返します。

ReadElementContentAsBoolean(String, String)

指定されたローカル名と名前空間 URI が現在の要素のものと一致することを確認し、現在の要素を読み取って、コンテンツを Boolean オブジェクトとして返します。

ReadElementContentAsDateTime()

現在の要素を読み取り、そのコンテンツを DateTime オブジェクトとして返します。

ReadElementContentAsDateTime(String, String)

指定されたローカル名と名前空間 URI が現在の要素のものと一致することを確認し、現在の要素を読み取って、コンテンツを DateTime オブジェクトとして返します。

ReadElementContentAsDecimal()

現在の要素を読み取り、そのコンテンツを Decimal オブジェクトとして返します。

ReadElementContentAsDecimal(String, String)

指定されたローカル名と名前空間 URI が現在の要素のものと一致することを確認し、現在の要素を読み取って、コンテンツを Decimal オブジェクトとして返します。

ReadElementContentAsDouble()

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

ReadElementContentAsDouble(String, String)

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

ReadElementContentAsFloat()

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

ReadElementContentAsFloat(String, String)

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

ReadElementContentAsInt()

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

ReadElementContentAsInt(String, String)

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

ReadElementContentAsLong()

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

ReadElementContentAsLong(String, String)

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

ReadElementContentAsObject()

現在の要素を読み取り、そのコンテンツを Object として返します。

ReadElementContentAsObject(String, String)

指定されたローカル名と名前空間 URI が現在の要素のものと一致することを確認し、現在の要素を読み取って、コンテンツを Object として返します。

ReadElementContentAsObjectAsync()

現在の要素を非同期に読み取り、そのコンテンツを Object として返します。

ReadElementContentAsString()

現在の要素を読み取り、そのコンテンツを String オブジェクトとして返します。

ReadElementContentAsString(String, String)

指定されたローカル名と名前空間 URI が現在の要素のものと一致することを確認し、現在の要素を読み取って、コンテンツを String オブジェクトとして返します。

ReadElementContentAsStringAsync()

現在の要素を非同期に読み取り、そのコンテンツを String オブジェクトとして返します。

ReadElementString()

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

ReadElementString(String)

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

ReadElementString(String, String)

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

ReadEndElement()

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

ReadInnerXml()

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

ReadInnerXmlAsync()

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

ReadOuterXml()

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

ReadOuterXmlAsync()

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

ReadStartElement()

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

ReadStartElement(String)

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

ReadStartElement(String, String)

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

ReadString()

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

ReadSubtree()

現在のノードおよびそのすべての子孫ノードを読み取るために使用できる、新しい XmlReader インスタンスを返します。

ReadToDescendant(String)

指定された修飾名を使用して XmlReader を次の子孫要素に進めます。

ReadToDescendant(String, String)

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

ReadToFollowing(String)

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

ReadToFollowing(String, String)

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

ReadToNextSibling(String)

指定された修飾名を使用して XmlReader を次の兄弟要素に進めます。

ReadToNextSibling(String, String)

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

ReadValueChunk(Char[], Int32, Int32)

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

ReadValueChunkAsync(Char[], Int32, Int32)

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

ResolveEntity()

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

Skip()

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

SkipAsync()

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

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

明示的なインターフェイスの実装

IDisposable.Dispose()

このメンバーの詳細については、「Dispose()」をご覧ください。

適用対象

こちらもご覧ください