读取元素

下表介绍 XmlReader 类为处理元素提供的方法和属性。 在 XmlReader 置于某个元素上之后,节点属性(例如 Name)将反映元素的值。 除了下面所述的成员之外,XmlReader 类的任何常规方法和属性也可以用于处理元素。 例如,可以使用 ReadInnerXml 方法读取元素的内容。

注意注意

这些方法包括对 MoveToContent 方法的初次调用。

成员名称

说明

IsStartElement

检查当前节点是否是开始标记或空的元素标记。

ReadStartElement

检查当前节点是否为元素并将读取器推进到下一个节点。

ReadEndElement

检查当前节点是否为结束标记并将读取器推进到下一个节点。

ReadElementString

读取纯文本元素。

ReadToDescendant

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

ReadToNextSibling

XmlReader 前进到具有指定名称的下一个同级元素。

IsEmptyElement

检查当前元素是否包含空的元素标记。 此属性使您能够确定下面各项之间的差异:

也就是说,IsEmptyElement 只是报告源文档中的元素是否包含结束元素标记。

示例

以下代码使用 ReadStartElementReadString 方法读取元素。

Using reader As XmlReader = XmlReader.Create("book3.xml")               
  ' Parse the XML document.  ReadString is used to 
  ' read the text content of the elements.
  reader.Read()
  reader.ReadStartElement("book")
  reader.ReadStartElement("title")
  Console.Write("The content of the title element:  ")
  Console.WriteLine(reader.ReadString())
  reader.ReadEndElement()
  reader.ReadStartElement("price")
  Console.Write("The content of the price element:  ")
  Console.WriteLine(reader.ReadString())
  reader.ReadEndElement()
  reader.ReadEndElement()            
End Using
using (XmlReader reader = XmlReader.Create("book3.xml")) {

  // Parse the XML document.  ReadString is used to 
  // read the text content of the elements.
  reader.Read(); 
  reader.ReadStartElement("book");  
  reader.ReadStartElement("title");   
  Console.Write("The content of the title element:  ");
  Console.WriteLine(reader.ReadString());
  reader.ReadEndElement();
  reader.ReadStartElement("price");
  Console.Write("The content of the price element:  ");
  Console.WriteLine(reader.ReadString());
  reader.ReadEndElement();
  reader.ReadEndElement();

}

以下代码使用 While 循环处理元素。

While reader.Read()
  If reader.IsStartElement() Then
    If reader.IsEmptyElement Then
      Console.WriteLine("<{0}/>", reader.Name)
    Else
      Console.Write("<{0}> ", reader.Name)
      reader.Read() ' Read the start tag.
      If reader.IsStartElement() Then ' Handle nested elements.
        Console.Write(vbCr + vbLf + "<{0}>", reader.Name)
      End If
      Console.WriteLine(reader.ReadString()) 'Read the text content of the element.
    End If
  End If
End While
while (reader.Read()) {
  if (reader.IsStartElement()) {
    if (reader.IsEmptyElement)
      Console.WriteLine("<{0}/>", reader.Name);
    else {
      Console.Write("<{0}> ", reader.Name);
      reader.Read(); // Read the start tag.
      if (reader.IsStartElement())  // Handle nested elements.
        Console.Write("\r\n<{0}>", reader.Name);
      Console.WriteLine(reader.ReadString());  //Read the text content of the element.
    }
  } 
} 

请参见

概念

用 XmlReader 读取 XML