Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
XmlNodeChangedEventArgs hermetyzuje argumenty przekazywane do procedur obsługi zdarzeń zarejestrowanych w obiekcie XmlDocument do obsługi tych zdarzeń. Zdarzenia i opis momentu, w którym są uruchamiane, podano w poniższej tabeli.
Zdarzenie | Wyzwolono |
---|---|
NodeInserting | Gdy węzeł należący do bieżącego dokumentu ma zostać wstawiony do innego węzła. |
NodeInserted | Gdy węzeł należący do bieżącego dokumentu został wstawiony do innego węzła. |
NodeRemoving | Gdy węzeł należący do tego dokumentu ma zostać usunięty. |
NodeRemoved | Gdy węzeł należący do tego dokumentu został usunięty z elementu nadrzędnego. |
NodeChanging | Gdy wartość węzła ma zostać zmieniona. |
NodeChanged | Gdy wartość węzła została zmieniona. |
Uwaga / Notatka
Jeśli użycie pamięci XmlDataDocument jest w pełni zoptymalizowane pod kątem korzystania z magazynu DataSet , dokument XmlDataDocument może nie zgłaszać żadnego z zdarzeń wymienionych powyżej, gdy zmiany zostaną wprowadzone do bazowego zestawu danych. Jeśli potrzebujesz tych zdarzeń, musisz przejść przez cały XmlDocument jeden raz, aby użycie pamięci nie było w pełni zoptymalizowane.
Poniższy przykład kodu pokazuje, jak zdefiniować procedurę obsługi zdarzeń i jak dodać program obsługi zdarzeń do zdarzenia.
' Attach the event handler, NodeInsertedHandler, to the NodeInserted
' event.
Dim doc as XmlDocument = new XmlDocument()
Dim XmlNodeChgEHdlr as XmlNodeChangedEventHandler = new XmlNodeChangedEventHandler(addressof MyNodeChangedEvent)
AddHandler doc.NodeInserted, XmlNodeChgEHdlr
Dim n as XmlNode = doc.CreateElement( "element" )
Console.WriteLine( "Before Event Inserting" )
' This is the point where the new node is being inserted in the tree,
' and this is the point where the NodeInserted event is raised.
doc.AppendChild( n )
Console.WriteLine( "After Event Inserting" )
' Define the event handler that handles the NodeInserted event.
sub NodeInsertedHandler(src as Object, args as XmlNodeChangedEventArgs)
Console.WriteLine("Node " + args.Node.Name + " inserted!!")
end sub
// Attach the event handler, NodeInsertedHandler, to the NodeInserted
// event.
XmlDocument doc = new XmlDocument();
doc.NodeInserted += new XmlNodeChangedEventHandler(NodeInsertedHandler);
XmlNode n = doc.CreateElement( "element" );
Console.WriteLine( "Before Event Inserting" );
// This is the point where the new node is being inserted in the tree,
// and this is the point where the NodeInserted event is raised.
doc.AppendChild( n );
Console.WriteLine( "After Event Inserting" );
// Define the event handler that handles the NodeInserted event.
void NodeInsertedHandler(Object src, XmlNodeChangedEventArgs args)
{
Console.WriteLine("Node " + args.Node.Name + " inserted!!");
}
Niektóre operacje modelu obiektowego dokumentu XML (XML DOM) to operacje złożone, które mogą skutkować wyzwoleniem wielu zdarzeń. Na przykład funkcja AppendChild może również wymagać usunięcia węzła dołączanego z poprzedniego elementu nadrzędnego. W tym przypadku najpierw wyzwalane jest zdarzenie NodeRemoved, a następnie zdarzenie NodeInserted. Operacje takie jak ustawienie InnerXml mogą powodować wiele zdarzeń.
Poniższy przykład kodu przedstawia tworzenie programu obsługi zdarzeń i obsługę zdarzenia NodeInserted .
Imports System
Imports System.IO
Imports System.Xml
Imports Microsoft.VisualBasic
Public Class Sample
Private Const filename As String = "books.xml"
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.
Dim XmlNodeChgEHdlr As XmlNodeChangedEventHandler = New XmlNodeChangedEventHandler(AddressOf MyNodeChangedEvent)
Dim XmlNodeInsertEHdlr As XmlNodeChangedEventHandler = New XmlNodeChangedEventHandler(AddressOf MyNodeInsertedEvent)
AddHandler doc.NodeChanged, XmlNodeChgEHdlr
AddHandler doc.NodeInserted, XmlNodeInsertEHdlr
' 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(Chr(13) + Chr(10) + "Display the modified XML...")
Console.WriteLine(doc.OuterXml)
End Sub
' Handle the NodeChanged event.
Public Sub MyNodeChangedEvent(ByVal src 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.
Public Sub MyNodeInsertedEvent(ByVal src 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 class
using System;
using System.IO;
using System.Xml;
public class Sample
{
private const String filename = "books.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
Aby uzyskać więcej informacji, zobacz XmlNodeChangedEventArgs i XmlNodeChangedEventHandler.