XmlReader.ReadToDescendant 方法

定義

XmlReader 推進到下一個匹配的後代元素。

多載

名稱 Description
ReadToDescendant(String, String)

將 推進 XmlReader 到下一個具有指定本地名稱與命名空間 URI 的後代元素。

ReadToDescendant(String)

將該 XmlReader 元素推進至指定限定名稱的下一個後裔元素。

ReadToDescendant(String, String)

將 推進 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)。

如果呼叫時 ReadToDescendant(String, String)XmlReader被定位於某元素上,此方法會回傳falseXmlReader 的位置不會改變。

例外狀況

在先前非同步操作結束前,會呼叫一個 XmlReader 方法。 此時, InvalidOperationException 會拋出「非同步操作已進行中」的訊息。

兩個參數值皆為 null

適用於

ReadToDescendant(String)

將該 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)。

如果呼叫時 ReadToDescendant(String)XmlReader被定位於某元素上,此方法會回傳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>

適用於