语言

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.
XmlReader 由 Create 读取文本数据的方法创建的实例。 No.
XmlReader 由 Create 读取二进制数据的方法创建的实例。 不適用。
方法创建的XmlReader架构验证Create实例。 Yes.
XmlValidatingReader Yes.
XmlReader 对象返回的 XPathNavigator 实例。 不適用。
XmlNodeReader No.
XmlReader 围绕另一个 XmlReader 实例包装的实例。 取决于基础 XmlReader的实现。 Skip(调用基础XmlReader上的方法)。

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

适用于