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.ReadAttributeValue は false を返します。
継承時の注意: このメソッドには継承確認要求があります。 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