次の方法で共有


XmlNodeChangedEventHandler デリゲート

NodeChangedNodeChangingNodeInsertedNodeInsertingNodeRemovedNodeRemoving の各イベントを処理するメソッドを表します。

<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 クラスのデリゲート定義と同一のパラメータを持つ必要があります。

解説

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 内)

参照

System.Xml 名前空間