次の方法で共有


XmlDocument.ReadNode メソッド

XmlReader 内の情報に基づいて、 XmlNode オブジェクトを作成します。リーダーは、ノードまたは属性に配置されている必要があります。

Public Overridable Function ReadNode( _
   ByVal reader As XmlReader _) As XmlNode
[C#]
public virtual XmlNode ReadNode(XmlReaderreader);
[C++]
public: virtual XmlNode* ReadNode(XmlReader* reader);
[JScript]
public function ReadNode(
   reader : XmlReader) : XmlNode;

パラメータ

  • reader
    XML ソース。

戻り値

新しい XmlNode 。ノードがそれ以上存在しない場合は null 参照 (Visual Basic では Nothing) 。

例外

例外の種類 条件
InvalidOperationException リーダーが、EndElement や EndEntity など、有効な DOM ノードに変換されないノード型に配置されています。

解説

指定したリーダーから 1 つの XmlNode を読み取り、そのリーダーを次のノードに配置します。このメソッドは、リーダーが現在配置されている NodeType に一致する XmlNode の型を作成します。リーダーが初期状態にある場合、 ReadNode はリーダーを最初のノードに進めて、そのノード上で動作します。

リーダーが要素の先頭に配置されている場合、 ReadNode は、現在のノードの終了タグを含め、その終了タグまでのすべての属性および子ノードを読み取ります。返された XmlNode には、読み取ったすべての内容を表すサブツリーが含まれます。リーダーは終了タグの直後に配置されます。

ReadNode も属性を読み取りますが、この場合は、リーダーを次の属性に進めません。これにより、次の C# コードを書き込むことができます。

XmlDocument doc = new XmlDocument();
while (reader.MoveToNextAttribute())
{
  XmlNode a = doc.ReadNode(reader);
  // Do some more processing.
}

ReadNode は属性値を使用しますが、1 つの属性で ReadNode を呼び出した後は、 XmlReader.ReadAttributeValuefalse を返します。

継承時の注意: このメソッドには継承確認要求があります。 ReadNode メソッドをオーバーライドするには、完全な信頼が必要です。詳細については、「 継承確認要求 」を参照してください。

このメソッドは、ドキュメント オブジェクト モデル (DOM: Document Object Model) に対する Microsoft 拡張機能です。

使用例

[Visual Basic, C#, C++] ReadNode を使用して新しいノードを作成し、そのノードをドキュメントに挿入する例を次に示します。

 
Option Explicit
Option Strict

Imports System
Imports System.IO
Imports System.Xml

Public Class Sample
    
    Public Shared Sub Main()
        'Create the XmlDocument.
        Dim doc As New XmlDocument()
        doc.LoadXml("<bookstore>" & _
                    "<book genre='novel' ISBN='1-861001-57-5'>" & _
                    "<title>Pride And Prejudice</title>" & _
                    "</book>" & _
                    "</bookstore>")
        
        'Create a reader.
        Dim reader As New XmlTextReader("cd.xml")
        reader.MoveToContent() 'Move to the cd element node.
        'Create a node representing the cd element node.
        Dim cd As XmlNode = doc.ReadNode(reader)
        
        'Insert the new node into the document.
        doc.DocumentElement.AppendChild(cd)
        
        Console.WriteLine("Display the modified XML...")
        doc.Save(Console.Out)
    End Sub 'Main 
End Class 'Sample

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

public class Sample
{
  public static void Main()
  {
    //Create the XmlDocument.
    XmlDocument doc = new XmlDocument();
    doc.LoadXml("<bookstore>" +
                "<book genre='novel' ISBN='1-861001-57-5'>" +
                "<title>Pride And Prejudice</title>" +
                "</book>" +
                "</bookstore>");

    //Create a reader.
    XmlTextReader reader = new XmlTextReader("cd.xml");
    reader.MoveToContent(); //Move to the cd element node.

    //Create a node representing the cd element node.
    XmlNode cd = doc.ReadNode(reader);

    //Insert the new node into the document.
    doc.DocumentElement.AppendChild(cd); 
    
    Console.WriteLine("Display the modified XML...");
    doc.Save(Console.Out);

  }
}

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

int main()
{
    //Create the XmlDocument.
    XmlDocument* doc = new XmlDocument();
    doc->LoadXml(S"<bookstore><book genre='novel' ISBN='1-861001-57-5'><title>Pride And Prejudice</title></book></bookstore>");

    //Create a reader.
    XmlTextReader* reader = new XmlTextReader(S"cd.xml");
    reader->MoveToContent(); //Move to the cd element node.

    //Create a node representing the cd element node.
    XmlNode* cd = doc->ReadNode(reader);

    //Insert the new node into the document.
    doc->DocumentElement->AppendChild(cd); 
    
    Console::WriteLine(S"Display the modified XML...");
    doc->Save(Console::Out);
}

この例では、入力として、 cd.xml というファイルを使用しています。

<!-- sample CD -->
<cd genre='alternative'>
  <title>Americana</title>
  <artist>Offspring</artist>
</cd>

[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

参照

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