XmlReader.Skip メソッド

定義

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

public:
 virtual void Skip();
public virtual void Skip();
abstract member Skip : unit -> unit
override this.Skip : unit -> unit
Public Overridable Sub Skip ()

例外

前の非同期操作が完了する前に、 XmlReader メソッドが呼び出されました。 この場合、"非同期操作は既に進行中です" というメッセージで InvalidOperationException がスローされます。

次の例では、2 番目のブック ノードから始まる XML ファイルを解析します。

using (XmlReader reader = XmlReader.Create("2books.xml")) {

  // Move the reader to the second book node.
  reader.MoveToContent();
  reader.ReadToDescendant("book");
  reader.Skip(); //Skip the first book.

  // Parse the file starting with the second book node.
  do {
     switch (reader.NodeType) {
        case XmlNodeType.Element:
           Console.Write("<{0}", reader.Name);
           while (reader.MoveToNextAttribute()) {
               Console.Write(" {0}='{1}'", reader.Name, reader.Value);
           }
           Console.Write(">");
           break;
        case XmlNodeType.Text:
           Console.Write(reader.Value);
           break;
        case XmlNodeType.EndElement:
           Console.Write("</{0}>", reader.Name);
           break;
     }
  }  while (reader.Read());
}
Using reader As XmlReader = XmlReader.Create("2books.xml")

  ' Move the reader to the second book node.
  reader.MoveToContent()
  reader.ReadToDescendant("book")
  reader.Skip() 'Skip the first book.
  ' Parse the file starting with the second book node.
  Do
    Select Case reader.NodeType
      Case XmlNodeType.Element
        Console.Write("<{0}", reader.Name)
        While reader.MoveToNextAttribute()
            Console.Write(" {0}='{1}'", reader.Name, reader.Value)
        End While
        Console.Write(">")
      Case XmlNodeType.Text
        Console.Write(reader.Value)
      Case XmlNodeType.EndElement
        Console.Write("</{0}>", reader.Name)
    End Select
  Loop While reader.Read()

End Using

この例では、 2books.xmlファイルを入力として使用します。

<!--sample XML fragment-->
<bookstore>
  <book genre='novel' ISBN='10-861003-324'>
    <title>The Handmaid's Tale</title>
    <price>19.95</price>
  </book>
  <book genre='novel' ISBN='1-861001-57-5'>
    <title>Pride And Prejudice</title>
    <price>24.95</price>
  </book>
</bookstore>

注釈

次の XML 入力では、リーダーが <a> ノードまたはその属性のいずれかに配置されている場合、 Skip を呼び出すとリーダーが <b> ノードに配置されます。

リーダーが既にリーフ ノード ( <x> ノードやテキスト ノード abcなど) に配置されている場合、 Skip の呼び出しは Readの呼び出しと同じです。

<a name="bob" age="123">
 <x/>abc<y/>
</a>
<b>
...
</b>

このメソッドは、整形式の XML をチェックします。

リーダーが XmlValidatingReaderの場合、このメソッドはスキップされたコンテンツも検証します。

XmlReader実装は、Skip メソッドが外部エンティティを拡張するかどうかを決定します。 次の表では、さまざまな種類の XmlReader オブジェクトに対して外部エンティティが展開されるかどうかを示します。

XmlReader の種類 外部エンティティを展開します
XmlTextReader No.
XmlReader テキスト データを読み取る Create メソッドによって作成されたインスタンス。 No.
XmlReader バイナリ データを読み取る Create メソッドによって作成されたインスタンス。 適用されません。
XmlReader メソッドによって作成Createインスタンスを検証するスキーマ。 Yes.
XmlValidatingReader Yes.
XmlReader XPathNavigator オブジェクトによって返されるインスタンス。 適用されません。
XmlNodeReader No.
XmlReader 別の XmlReader インスタンスの周りにラップされたインスタンス。 基になる XmlReaderの実装によって異なります。 (基になるSkipXmlReader メソッドが呼び出されます)。

このメソッドの非同期バージョンについては、 SkipAsyncを参照してください。

適用対象