XmlReader.ReadToDescendant 方法

定义

XmlReader 前进到下一个匹配的子代元素。

重载

ReadToDescendant(String, String)

XmlReader 前进到下一个具有指定的本地名称和命名空间 URI 的子代元素。

ReadToDescendant(String)

XmlReader 前进到下一个具有指定限定名的子代元素。

ReadToDescendant(String, String)

Source:
XmlReader.cs
Source:
XmlReader.cs
Source:
XmlReader.cs

XmlReader 前进到下一个具有指定的本地名称和命名空间 URI 的子代元素。

public:
 virtual bool ReadToDescendant(System::String ^ localName, System::String ^ namespaceURI);
public virtual bool ReadToDescendant (string localName, string namespaceURI);
abstract member ReadToDescendant : string * string -> bool
override this.ReadToDescendant : string * string -> bool
Public Overridable Function ReadToDescendant (localName As String, namespaceURI As String) As Boolean

参数

localName
String

要移动到的元素的本地名称。

namespaceURI
String

要移动到的元素的命名空间 URI。

返回

如果找到匹配的子代元素,则为 true;否则为 false。 如果未找到匹配的后代元素, XmlReader 则定位在结束标记上, (NodeType 元素 XmlNodeType.EndElement) 。

如果调用 XmlReader 时没有将 ReadToDescendant(String, String) 定位在某个元素上,则此方法返回 falseXmlReader 的位置保持不变。

例外

在上一次异步操作完成之前调用了 XmlReader 方法。 在此情况下,会引发 InvalidOperationException 并显示消息“异步操作已在进行中。”

两个参数值均为 null

适用于

ReadToDescendant(String)

Source:
XmlReader.cs
Source:
XmlReader.cs
Source:
XmlReader.cs

XmlReader 前进到下一个具有指定限定名的子代元素。

public:
 virtual bool ReadToDescendant(System::String ^ name);
public virtual bool ReadToDescendant (string name);
abstract member ReadToDescendant : string -> bool
override this.ReadToDescendant : string -> bool
Public Overridable Function ReadToDescendant (name As String) As Boolean

参数

name
String

要移动到的元素的限定名。

返回

如果找到匹配的子代元素,则为 true;否则为 false。 如果未找到匹配的后代元素, XmlReader 则定位在结束标记上, (NodeType 元素 XmlNodeType.EndElement) 。

如果调用 XmlReader 时没有将 ReadToDescendant(String) 定位在某个元素上,则此方法返回 falseXmlReader 的位置保持不变。

例外

在上一次异步操作完成之前调用了 XmlReader 方法。 在此情况下,会引发 InvalidOperationException 并显示消息“异步操作已在进行中。”

参数是空字符串。

示例

以下示例分析第二个书籍节点。

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>

适用于