XmlNodeEventHandler-Delegat
Stellt die Methode dar, die das UnknownNode-Ereignis einer XmlSerializer behandelt.
Namespace: System.Xml.Serialization
Assembly: System.Xml (in system.xml.dll)
Syntax
'Declaration
Public Delegate Sub XmlNodeEventHandler ( _
sender As Object, _
e As XmlNodeEventArgs _
)
'Usage
Dim instance As New XmlNodeEventHandler(AddressOf HandlerMethod)
public delegate void XmlNodeEventHandler (
Object sender,
XmlNodeEventArgs e
)
public delegate void XmlNodeEventHandler (
Object^ sender,
XmlNodeEventArgs^ e
)
/** @delegate */
public delegate void XmlNodeEventHandler (
Object sender,
XmlNodeEventArgs e
)
JScript unterstützt die Verwendung von Delegaten, aber nicht die Deklaration von neuen Delegaten.
Parameter
- sender
Die Quelle des Ereignisses.
- e
Ein XmlNodeEventArgs, das die Ereignisdaten enthält.
Hinweise
Beim Erstellen eines XmlNodeEventHandler-Delegaten bestimmen Sie die Methode für die Ereignisbehandlung. Um das Ereignis dem Ereignishandler zuzuordnen, fügen Sie dem Ereignis eine Instanz des Delegaten hinzu. Der Ereignishandler wird bei jedem Eintreten des Ereignisses aufgerufen, sofern der Delegat nicht entfernt wird. Weitere Informationen über Ereignishandlerdelegaten finden Sie unter Ereignisse und Delegaten.
Das UnknownNode-Ereignis tritt nur bei einem Aufruf der Deserialize-Methode ein.
Beispiel
Im folgenden Beispiel wird ein XmlSerializer erstellt, ein Handler für das UnknownNode-Ereignis hinzugefügt und ein Objekt deserialisiert.
Private Sub DeserializeItem(ByVal filename As String)
Dim mySerializer As New XmlSerializer(GetType(ObjectToDeserialize))
' Add an instance of the delegate to the event.
AddHandler mySerializer.UnknownNode, AddressOf Serializer_UnknownNode
' A FileStream is needed to read the file to deserialize.
Dim fs As New FileStream(filename, FileMode.Open)
Dim o As ObjectToDeserialize = _
CType(mySerializer.Deserialize(fs), ObjectToDeserialize)
End Sub 'DeserializeItem
Private Sub Serializer_UnknownNode _
(ByVal sender As Object, _
ByVal e As XmlNodeEventArgs)
Console.WriteLine("UnknownNode Name: " & e.Name)
Console.WriteLine("UnknownNode LocalName: " & e.LocalName)
Console.WriteLine("UnknownNode Namespace URI: " & e.NamespaceURI)
Console.WriteLine("UnknownNode Text: " & e.Text)
Dim o As Object = e.ObjectBeingDeserialized
Console.WriteLine("Object being deserialized " & o.ToString())
Dim myNodeType As XmlNodeType = e.NodeType
Console.WriteLine(myNodeType)
End Sub
private void DeserializeItem(string filename) {
XmlSerializer mySerializer =
new XmlSerializer(typeof(ObjectToDeserialize));
// Add an instance of the delegate to the event.
mySerializer.UnknownNode += new XmlNodeEventHandler
(Serializer_UnknownNode);
// A FileStream is needed to read the file to deserialize.
FileStream fs = new FileStream(filename, FileMode.Open);
ObjectToDeserialize o = (ObjectToDeserialize)mySerializer.Deserialize(fs);
}
private void Serializer_UnknownNode
(object sender, XmlNodeEventArgs e) {
Console.WriteLine("UnknownNode Name: "
+ e.Name);
Console.WriteLine("UnknownNode LocalName: "
+ e.LocalName);
Console.WriteLine("UnknownNode Namespace URI: "
+ e.NamespaceURI);
Console.WriteLine("UnknownNode Text: "
+ e.Text);
object o = e.ObjectBeingDeserialized;
Console.WriteLine("Object being deserialized "
+ o.ToString());
XmlNodeType myNodeType = e.NodeType;
Console.WriteLine(myNodeType);
}
private:
void DeserializeItem( String^ filename )
{
XmlSerializer^ mySerializer = gcnew XmlSerializer( ObjectToDeserialize::typeid );
// Add an instance of the delegate to the event.
mySerializer->UnknownNode += gcnew XmlNodeEventHandler( this, &Class1::Serializer_UnknownNode );
// A FileStream is needed to read the file to deserialize.
FileStream^ fs = gcnew FileStream( filename,FileMode::Open );
ObjectToDeserialize^ o = dynamic_cast<ObjectToDeserialize^>(mySerializer->Deserialize( fs ));
}
void Serializer_UnknownNode( Object^ sender, XmlNodeEventArgs^ e )
{
Console::WriteLine( "UnknownNode Name: {0}", e->Name );
Console::WriteLine( "UnknownNode LocalName: {0}", e->LocalName );
Console::WriteLine( "UnknownNode Namespace URI: {0}", e->NamespaceURI );
Console::WriteLine( "UnknownNode Text: {0}", e->Text );
Object^ o = e->ObjectBeingDeserialized;
Console::WriteLine( "Object being deserialized {0}", o );
XmlNodeType myNodeType = e->NodeType;
Console::WriteLine( myNodeType );
}
private void DeserializeItem(String fileName)
{
XmlSerializer mySerializer =
new XmlSerializer(ObjectToDeserialize.class.ToType());
// Add an instance of the delegate to the event.
mySerializer.add_UnknownNode(
new XmlNodeEventHandler(Serializer_UnknownNode));
// A FileStream is needed to read the file to deserialize.
FileStream fs = new FileStream(fileName, FileMode.Open);
ObjectToDeserialize o =
(ObjectToDeserialize)mySerializer.Deserialize(fs);
} //DeserializeItem
protected void Serializer_UnknownNode(Object sender, XmlNodeEventArgs e)
{
Console.WriteLine("UnknownNode Name: " + e.get_Name());
Console.WriteLine("UnknownNode LocalName: " + e.get_LocalName());
Console.WriteLine("UnknownNode Namespace URI: " + e.get_NamespaceURI());
Console.WriteLine("UnknownNode Text: " + e.get_Text());
Object o = e.get_ObjectBeingDeserialized();
Console.WriteLine("Object being deserialized " + o.ToString());
XmlNodeType myNodeType = e.get_NodeType();
Console.WriteLine(myNodeType);
} //Serializer_UnknownNode
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0
Siehe auch
Referenz
System.Xml.Serialization-Namespace
Deserialize
XmlSerializer