Auf Englisch lesen

Freigeben über


XmlSerializer.UnknownElement Ereignis

Definition

Tritt ein, wenn XmlSerializer während der Deserialisierung auf ein XML-Element von unbekanntem Typ stößt.

C#
public event System.Xml.Serialization.XmlElementEventHandler UnknownElement;

Ereignistyp

Beispiele

Im folgenden Beispiel wird eine Klasse namens Group aus einer Datei namens UnknownElements.xml deserialisiert. Wenn in der Datei ein Element gefunden wird, das kein entsprechendes Element in der -Klasse enthält, tritt das UnknownElement -Ereignis auf. Fügen Sie zum Probieren des Beispiels den folgenden XML-Code in eine Datei mit dem Namen UnknownElements.xml ein.

<?xml version="1.0" encoding="utf-8"?>
<Group xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <GroupName>MyGroup</GroupName>
  <GroupSize>Large</GroupSize>
  <GroupNumber>444</GroupNumber>
  <GroupBase>West</GroupBase>
</Group>
C#
using System;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System.Xml.Schema;

public class Group{
   public string GroupName;
}

public class Test{
   static void Main(){
      Test t = new Test();
      // Deserialize the file containing unknown elements.
      t.DeserializeObject("UnknownElements.xml");
   }
   private void Serializer_UnknownElement(object sender, XmlElementEventArgs e){
      Console.WriteLine("Unknown Element");
      Console.WriteLine("\t" + e.Element.Name + " " + e.Element.InnerXml);
      Console.WriteLine("\t LineNumber: " + e.LineNumber);
      Console.WriteLine("\t LinePosition: " + e.LinePosition);
      
      Group x  = (Group) e.ObjectBeingDeserialized;
      Console.WriteLine (x.GroupName);
      Console.WriteLine (sender.ToString());
   }
   private void DeserializeObject(string filename){
      XmlSerializer ser = new XmlSerializer(typeof(Group));
      // Add a delegate to handle unknown element events.
      ser.UnknownElement+=new XmlElementEventHandler(Serializer_UnknownElement);
      // A FileStream is needed to read the XML document.
     FileStream fs = new FileStream(filename, FileMode.Open);
     Group g = (Group) ser.Deserialize(fs);
     fs.Close();
    }
}

Hinweise

Nach dem Aufrufen der Deserialize Methode XmlSerializer werden XML-Attribute unbekannter Typen standardmäßig ignoriert. Sie können dieses Ereignis jedoch verwenden, um solche Knotentypen zu behandeln.

Hinweis

Wenn auf XmlAnyElementAttribute ein Feld angewendet wird, das ein Array von XmlElement Objekten zurückgibt, werden alle unbekannten Elemente im Array gesammelt. In diesem Fall tritt das UnknownElement Ereignis nicht auf.

Gilt für:

Produkt Versionen
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Weitere Informationen