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) ,则调用与调用SkipRead相同。

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

此方法检查格式良好的 XML。

如果读取器是一个 XmlValidatingReader,此方法还会验证跳过的内容。

实现 XmlReader 确定该方法是否会 Skip 扩展外部实体。 下表描述了是否为各种类型的 XmlReader 对象扩展了外部实体。

XmlReader 的类型 扩展外部实体
XmlTextReader 不是。
XmlReaderCreate 读取文本数据的方法创建的实例。 不是。
XmlReaderCreate 读取二进制数据的方法创建的实例。 不适用。
验证 XmlReader 方法创建的实例的 Create 架构。 是的。
XmlValidatingReader 是的。
XmlReader 对象返回的 XPathNavigator 实例。 不适用。
XmlNodeReader 不是。
XmlReader 包装在另一个 XmlReader 实例周围的实例。 取决于基础 XmlReader的实现。 Skip (基础上的XmlReader方法) 调用。

有关此方法的异步版本,请参阅 SkipAsync

适用于