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

适用于