XmlNodeEventHandler デリゲート
XmlSerializer の UnknownNode イベントを処理するメソッドを表します。
<Serializable>
Public Delegate Sub XmlNodeEventHandler( _ ByVal sender As Object, _ ByVal e As XmlNodeEventArgs _)
[C#]
[Serializable]
public delegate void XmlNodeEventHandler( object sender, XmlNodeEventArgs e);
[C++]
[Serializable]
public __gc __delegate void XmlNodeEventHandler( Object* sender, XmlNodeEventArgs* e);
[JScript] JScript では、.NET Framework のデリゲートを利用することができます。ただし、独自に定義することはできません。
パラメータ [Visual Basic, C#, C++]
作成するイベント ハンドラは、XmlNodeEventHandler クラスのデリゲート定義と同一のパラメータを持つ必要があります。
- sender
イベントのソース。 - e
イベント データを格納している XmlNodeEventArgs 。
解説
XmlNodeEventHandler デリゲートを作成する場合は、このイベントを処理するメソッドを指定します。イベントをイベント ハンドラに関連付けるには、デリゲートのインスタンスをイベントに追加します。デリゲートを削除しない限り、そのイベントが発生すると常にイベント ハンドラが呼び出されます。イベント ハンドラ デリゲートの詳細については、「 イベントとデリゲート 」を参照してください。
UnknownNode イベントは、 Deserialize メソッドが呼び出されたときにだけ発生します。
使用例
[Visual Basic, C#, C++] XmlSerializer を作成し、 UnknownNode イベントにイベント ハンドラを追加し、オブジェクトを逆シリアル化する例を次に示します。
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
Protected 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
[C#]
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);
}
protected 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);
}
[C++]
private:
void DeserializeItem(String* filename) {
XmlSerializer* mySerializer =
new XmlSerializer(__typeof(ObjectToDeserialize));
// Add an instance of the delegate to the event.
mySerializer->UnknownNode += new XmlNodeEventHandler(this, &Class1::Serializer_UnknownNode);
// A FileStream is needed to read the file to deserialize.
FileStream* fs = new FileStream(filename, FileMode::Open);
ObjectToDeserialize* o = dynamic_cast<ObjectToDeserialize*>(mySerializer->Deserialize(fs));
}
protected:
void Serializer_UnknownNode(Object* sender, XmlNodeEventArgs* e) {
Console::WriteLine(S"UnknownNode Name: {0}", e->Name);
Console::WriteLine(S"UnknownNode LocalName: {0}", e->LocalName);
Console::WriteLine(S"UnknownNode Namespace URI: {0}", e->NamespaceURI);
Console::WriteLine(S"UnknownNode Text: {0}", e->Text);
Object* o = e->ObjectBeingDeserialized;
Console::WriteLine(S"Object being deserialized {0}", o);
XmlNodeType myNodeType = e->NodeType;
Console::WriteLine(myNodeType);
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
名前空間: System.Xml.Serialization
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
アセンブリ: System.Xml (System.Xml.dll 内)