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 會拋出「非同步操作已進行中」的訊息。

範例

以下範例解析從第二個書本節點開始的 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.
XmlReaderCreate 讀取文字資料的方法所建立的實例。 No.
XmlReaderCreate 讀取二進位資料的方法所建立的實例。 不適用。
由方法建立XmlReader的結構驗證Create實例。 Yes.
XmlValidatingReader Yes.
XmlReader 實例由物件 XPathNavigator 回傳。 不適用。
XmlNodeReader No.
XmlReader 實例包裹在另一個 XmlReader 實例上。 這取決於底層 XmlReader的實作。 ( Skip 標的的 XmlReader 上的方法稱為 。)

關於此方法的非同步版本,請參見 SkipAsync

適用於