要素の読み取り

次の表では、XmlReader クラスで要素の処理のために提供されるメソッドとプロパティについて説明します。XmlReader が 1 つの要素上に位置した後、Name などのノードのプロパティには要素の値が反映されます。下に説明するメンバーに加えて、XmlReader クラスの任意の一般メソッドとプロパティも要素の処理に使用できます。たとえば、ReadInnerXml メソッドを使用して要素のコンテンツを読むことができます。

注意

これらのメソッドには、最初に MoveToContent メソッドの呼び出しが含まれています。

メンバー名

説明

IsStartElement

現在のノードが開始タグまたは空要素タグであるかどうかを調べます。

ReadStartElement

現在のノードが要素であるか調べ、リーダーを次のノードに進めます。

ReadEndElement

現在のノードが終了タグであるか調べ、リーダーを次のノードに進めます。

ReadElementString

テキストのみの要素を読みます。

ReadToDescendant

XmlReader を指定した名前の次の子孫要素に進めます。

ReadToNextSibling

XmlReader を指定した名前の次の兄弟要素に進めます。

IsEmptyElement

現在の要素が空要素タグを持つかどうか調べます。このプロパティにより、次のことが区別できます。

つまり、IsEmptyElement は単にソース ドキュメント中の要素に要素の終了タグがあるかどうかを報告します。

次のコードは、ReadStartElement メソッドと ReadString メソッドを使用して要素を読み取ります。

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 の読み取り