次の方法で共有


XmlReader.Skip メソッド

現在のノードの子をスキップします。

Public Overridable Sub Skip()
[C#]
public virtual void Skip();
[C++]
public: virtual void Skip();
[JScript]
public function Skip();

解説

次の XML 入力では、リーダーを <a> ノードまたはその属性に配置した場合、 Skip を呼び出すとリーダーが <b> ノードに配置されます。

リーダーが既にリーフ ノード (<x> ノードやテキスト ノード abc など) に配置されている場合、 Skip の呼び出しは、 Read の呼び出しと同じになります。

<a name="bob" age="123">
 <x/>abc<y/>
 </a>
 <b>
 ...
 </b>

このメソッドは、整形式の XML かどうかをチェックします。

リーダーが XmlValidatingReader の場合、このメソッドは、スキップした内容も検証します。

使用例

[Visual Basic, C#, C++] 2 番目の Book ノードから XML ファイルを解析する例を次に示します。

 
Imports System
Imports System.IO
Imports System.Xml

Public Class Sample
   
   Public Shared Sub Main()
      Dim reader As XmlTextReader = Nothing
      
      Try
         
         ' Load the XmlTextReader.
         reader = New XmlTextReader("2books.xml")
         reader.WhitespaceHandling = WhitespaceHandling.None
         
         ' Move the reader to the second book node.
         reader.MoveToContent()
         reader.Read()
         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()
      
      Finally
         If Not (reader Is Nothing) Then
            reader.Close()
         End If
      End Try
   End Sub 
End Class 

[C#] 
using System;
using System.IO;
using System.Xml;

public class Sample {

  public static void Main() {
  
    XmlTextReader reader = null;

    try {

       // Load the XmlTextReader. 
       reader = new XmlTextReader("2books.xml");
       reader.WhitespaceHandling = WhitespaceHandling.None;

       // Move the reader to the second book node.
       reader.MoveToContent(); 
       reader.Read();
       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());         

     } 
     finally  {
        if (reader != null)
          reader.Close();
     }
  } 
} 

[C++] 
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;

int main() {

   XmlTextReader* reader = 0;

   try {

      // Load the XmlTextReader. 
      reader = new XmlTextReader(S"2books.xml");
      reader->WhitespaceHandling = WhitespaceHandling::None;

      // Move the reader to the second book node.
      reader->MoveToContent(); 
      reader->Read();
      reader->Skip(); //Skip the first book.


      // Parse the file starting with the second book node.
      do {
         switch (reader->NodeType)
         {
         case XmlNodeType::Element:
            Console::Write(S"<{0}",reader->Name);
            while (reader->MoveToNextAttribute()) {
               Console::Write(S" {0}='{1}'", reader->Name, reader->Value);
            }
            Console::Write(S">");
            break;
         case XmlNodeType::Text:
            Console::Write(reader->Value);
            break;
         case XmlNodeType::EndElement:
            Console::Write(S"</{0}>", reader->Name);
            break;
         }       
      }  while (reader->Read());         

   } 
   __finally  {
      if (reader != 0)
         reader->Close();
   }
} 

この例では、入力として、 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>

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

XmlReader クラス | XmlReader メンバ | System.Xml 名前空間