XmlNodeChangedEventHandler デリゲート
NodeChanged 、 NodeChanging 、 NodeInserted 、 NodeInserting 、 NodeRemoved 、 NodeRemoving の各イベントを処理するメソッドを表します。
<Serializable>
Public Delegate Sub XmlNodeChangedEventHandler( _ ByVal sender As Object, _ ByVal e As XmlNodeChangedEventArgs _)
[C#]
[Serializable]
public delegate void XmlNodeChangedEventHandler( object sender, XmlNodeChangedEventArgs e);
[C++]
[Serializable]
public __gc __delegate void XmlNodeChangedEventHandler( Object* sender, XmlNodeChangedEventArgs* e);
[JScript] JScript では、.NET Framework のデリゲートを利用することができます。ただし、独自に定義することはできません。
パラメータ [Visual Basic, C#, C++]
作成するイベント ハンドラは、XmlNodeChangedEventHandler クラスのデリゲート定義と同一のパラメータを持つ必要があります。
- sender
イベントのソース。 - e
イベント データを格納している XmlNodeChangedEventArgs 。
解説
XmlNodeChangedEventHandler デリゲートを作成する場合は、イベントを処理するメソッドを識別します。イベントをイベント ハンドラに関連付けるには、デリゲートのインスタンスをイベントに追加します。デリゲートを削除しない限り、そのイベントが発生すると常にイベント ハンドラが呼び出されます。イベント ハンドラ デリゲートの詳細については、「 イベントとデリゲート 」を参照してください。
使用例
NodeChanged イベントおよび NodeInserted イベントを処理する方法の例を次に示します。
Imports System
Imports System.IO
Imports System.Xml
public class Sample
private const filename as String = "book.xml"
public shared sub Main()
Dim mySample as Sample = new Sample()
mySample.Run(filename)
end sub
public sub Run(args as String)
' Create and load the XML document.
Console.WriteLine ("Loading file {0} ...", args)
Dim doc as XmlDocument = new XmlDocument()
doc.Load (args)
'Create the event handlers.
AddHandler doc.NodeChanged, addressOf MyNodeChangedEvent
AddHandler doc.NodeInserted, addressOf MyNodeInsertedEvent
' Change the book price.
doc.DocumentElement.LastChild.InnerText = "5.95"
' Add a new element.
Dim newElem as XmlElement = doc.CreateElement("style")
newElem.InnerText = "hardcover"
doc.DocumentElement.AppendChild(newElem)
Console.WriteLine()
Console.WriteLine("Display the modified XML...")
Console.WriteLine(doc.OuterXml)
end sub
' Handle the NodeChanged event.
public sub MyNodeChangedEvent(src as Object, args as XmlNodeChangedEventArgs)
Console.Write("Node Changed Event: <{0}> changed", args.Node.Name)
if not (args.Node.Value is nothing) then
Console.WriteLine(" with value {0}", args.Node.Value)
else
Console.WriteLine("")
end if
end sub
' Handle the NodeInserted event.
public sub MyNodeInsertedEvent(src as Object, args as XmlNodeChangedEventArgs)
Console.Write("Node Inserted Event: <{0}> inserted", args.Node.Name)
if not (args.Node.Value is nothing) then
Console.WriteLine(" with value {0}", args.Node.Value)
else
Console.WriteLine("")
end if
end sub
end class
[C#]
using System;
using System.IO;
using System.Xml;
public class Sample
{
private const String filename = "book.xml";
public static void Main()
{
Sample mySample = new Sample();
mySample.Run(filename);
}
public void Run(String args)
{
// Create and load the XML document.
Console.WriteLine ("Loading file {0} ...", args);
XmlDocument doc = new XmlDocument();
doc.Load (args);
//Create the event handlers.
doc.NodeChanged += new XmlNodeChangedEventHandler(this.MyNodeChangedEvent);
doc.NodeInserted += new XmlNodeChangedEventHandler(this.MyNodeInsertedEvent);
// Change the book price.
doc.DocumentElement.LastChild.InnerText = "5.95";
// Add a new element.
XmlElement newElem = doc.CreateElement("style");
newElem.InnerText = "hardcover";
doc.DocumentElement.AppendChild(newElem);
Console.WriteLine("\r\nDisplay the modified XML...");
Console.WriteLine(doc.OuterXml);
}
// Handle the NodeChanged event.
public void MyNodeChangedEvent(Object src, XmlNodeChangedEventArgs args)
{
Console.Write("Node Changed Event: <{0}> changed", args.Node.Name);
if (args.Node.Value != null)
{
Console.WriteLine(" with value {0}", args.Node.Value);
}
else
Console.WriteLine("");
}
// Handle the NodeInserted event.
public void MyNodeInsertedEvent(Object src, XmlNodeChangedEventArgs args)
{
Console.Write("Node Inserted Event: <{0}> inserted", args.Node.Name);
if (args.Node.Value != null)
{
Console.WriteLine(" with value {0}", args.Node.Value);
}
else
Console.WriteLine("");
}
} // End class
[C++]
#using <mscorlib.dll>
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
public __gc class Sample
{
public:
void Run(String* args)
{
// Create and load the XML document.
Console::WriteLine (S"Loading file {0} ...", args);
XmlDocument* doc = new XmlDocument();
doc->Load (args);
//Create the event handlers.
doc->NodeChanged += new XmlNodeChangedEventHandler(this, &Sample::MyNodeChangedEvent);
doc->NodeInserted += new XmlNodeChangedEventHandler(this, &Sample::MyNodeInsertedEvent);
// Change the book price.
doc->DocumentElement->LastChild->InnerText = S"5.95";
// Add a new element.
XmlElement* newElem = doc->CreateElement(S"style");
newElem->InnerText = S"hardcover";
doc->DocumentElement->AppendChild(newElem);
Console::WriteLine(S"\r\nDisplay the modified XML...");
Console::WriteLine(doc->OuterXml);
}
// Handle the NodeChanged event.
void MyNodeChangedEvent(Object* /*src*/, XmlNodeChangedEventArgs* args)
{
Console::Write(S"Node Changed Event: <{0}> changed", args->Node->Name);
if (args->Node->Value != 0)
{
Console::WriteLine(S" with value {0}", args->Node->Value);
}
else
Console::WriteLine(S"");
}
// Handle the NodeInserted event.
void MyNodeInsertedEvent(Object* /*src*/, XmlNodeChangedEventArgs* args)
{
Console::Write(S"Node Inserted Event: <{0}> inserted", args->Node->Name);
if (args->Node->Value != 0)
{
Console::WriteLine(S" with value {0}", args->Node->Value);
}
else
Console::WriteLine(S"");
}
}; // End class
int main()
{
Sample* mySample = new Sample();
mySample->Run(S"book.xml");
}
この例では、入力として、 book.xml というファイルを使用しています。
<!--sample XML fragment-->
<book genre='novel' ISBN='1-861003-78' misc='sale-item'>
<title>The Handmaid's Tale</title>
<price>14.95</price>
</book>
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Xml
プラットフォーム: 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
アセンブリ: System.Xml (System.Xml.dll 内)