XmlNodeChangedEventHandler 委托

表示处理以下事件的方法:NodeChangedNodeChangingNodeInsertedNodeInsertingNodeRemovedNodeRemoving

**命名空间:**System.Xml
**程序集:**System.Xml(在 system.xml.dll 中)

语法

声明
Public Delegate Sub XmlNodeChangedEventHandler ( _
    sender As Object, _
    e As XmlNodeChangedEventArgs _
)
用法
Dim instance As New XmlNodeChangedEventHandler(AddressOf HandlerMethod)
public delegate void XmlNodeChangedEventHandler (
    Object sender,
    XmlNodeChangedEventArgs e
)
public delegate void XmlNodeChangedEventHandler (
    Object^ sender, 
    XmlNodeChangedEventArgs^ e
)
/** @delegate */
public delegate void XmlNodeChangedEventHandler (
    Object sender, 
    XmlNodeChangedEventArgs e
)
JScript 支持使用委托,但不支持进行新的声明。

参数

  • sender
    事件源。

备注

创建 XmlNodeChangedEventHandler 委托时,请标识处理事件的方法。若要使该事件与事件处理程序相关联,请将该委托的一个实例添加到事件中。除非移除了该委托,否则每当发生该事件时就调用事件处理程序。有关事件处理程序委托的更多信息,请参见 事件和委托

示例

下面的示例显示如何处理 NodeChangedNodeInserted 事件。

Imports System
Imports System.IO
Imports System.Xml

Namespace Microsoft.Samples.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(ByVal 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.
        Private Sub MyNodeChangedEvent(ByVal source As Object, ByVal 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.
        Private Sub MyNodeInsertedEvent(ByVal source As Object, ByVal 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

End Namespace
using System;
using System.IO;
using System.Xml;

namespace Microsoft.Samples.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.
        private void MyNodeChangedEvent(Object source, 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.
        private void MyNodeInsertedEvent(Object source, 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 
#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
public ref class Sample
{
public:
   void Run( String^ args )
   {
      // Create and load the XML document.
      Console::WriteLine( "Loading file {0} ...", args );
      XmlDocument^ doc = gcnew XmlDocument;
      doc->Load( args );
      
      //Create the event handlers.
      doc->NodeChanged += gcnew XmlNodeChangedEventHandler( this, &Sample::MyNodeChangedEvent );
      doc->NodeInserted += gcnew XmlNodeChangedEventHandler( this, &Sample::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.
private:
   void MyNodeChangedEvent( Object^ /*src*/, XmlNodeChangedEventArgs^ args )
   {
      Console::Write( "Node Changed Event: <{0}> changed", args->Node->Name );
      if ( args->Node->Value != nullptr )
      {
         Console::WriteLine( " with value  {0}", args->Node->Value );
      }
      else
            Console::WriteLine( "" );
   }

   // Handle the NodeInserted event.
   void MyNodeInsertedEvent( Object^ /*src*/, XmlNodeChangedEventArgs^ args )
   {
      Console::Write( "Node Inserted Event: <{0}> inserted", args->Node->Name );
      if ( args->Node->Value != nullptr )
      {
         Console::WriteLine( " with value {0}", args->Node->Value );
      }
      else
            Console::WriteLine( "" );
   }
};
// End class 

int main()
{
   Sample^ mySample = gcnew Sample;
   mySample->Run( "book.xml" );
}
import System.*;
import System.IO.*;
import System.Xml.*;

public class Sample
{
    private static String filename = "book.xml";

    public static void main(String[] args)
    {
        Sample mySample = new Sample();
        mySample.Run(filename);
    } //main

    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.add_NodeChanged(new XmlNodeChangedEventHandler(this.
            MyNodeChangedEvent));
        doc.add_NodeInserted(new XmlNodeChangedEventHandler(this.
            MyNodeInsertedEvent));
        // Change the book price.
        doc.get_DocumentElement().get_LastChild().set_InnerText("5.95");
        // Add a new element.
        XmlElement newElem = doc.CreateElement("style");
        newElem.set_InnerText("hardcover");
        doc.get_DocumentElement().AppendChild(newElem);

        Console.WriteLine("\r\nDisplay the modified XML...");
        Console.WriteLine(doc.get_OuterXml());
    } //Run

    // Handle the NodeChanged event.
    public void MyNodeChangedEvent(Object src, XmlNodeChangedEventArgs args)
    {
        Console.Write("Node Changed Event: <{0}> changed", args.get_Node().
            get_Name());
        if (args.get_Node().get_Value() != null) {
            Console.WriteLine(" with value  {0}", args.get_Node().
                get_Value());
        }
        else {
            Console.WriteLine("");
        }
    } //MyNodeChangedEvent

    // Handle the NodeInserted event.
    public void MyNodeInsertedEvent(Object src, XmlNodeChangedEventArgs args)
    {
        Console.Write("Node Inserted Event: <{0}> inserted", args.get_Node().
            get_Name());
        if (args.get_Node().get_Value() != null) {
            Console.WriteLine(" with value {0}", args.get_Node().get_Value());
        }
        else {
            Console.WriteLine("");
        }
    } //MyNodeInsertedEvent 
} //Sample 

该示例使用文件 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>

平台

Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition

.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求

版本信息

.NET Framework

受以下版本支持:2.0、1.1、1.0

.NET Compact Framework

受以下版本支持:2.0、1.0

请参见

参考

System.Xml 命名空间