XmlSerializer.UnknownElement Événement

Définition

Se produit lorsque, pendant la désérialisation, XmlSerializer rencontre un élément XML de type inconnu.

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

Type d'événement

Exemples

L’exemple suivant désérialise une classe nommée Group à partir d’un fichier nommé UnknownElements.xml. Chaque fois qu’un élément est trouvé dans le fichier qui n’a aucun membre correspondant dans la classe, l’événement UnknownElement se produit. Pour essayer l’exemple, collez le code XML suivant dans un fichier nommé UnknownElements.xml.

<?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();
    }
}

Remarques

Par défaut, après avoir appelé la Deserialize méthode , ignore XmlSerializer les attributs XML de types inconnus. Toutefois, vous pouvez utiliser cet événement pour gérer ces types de nœuds.

Remarque

Si est XmlAnyElementAttribute appliqué à un champ qui retourne un tableau d’objets XmlElement , tous les éléments inconnus sont collectés dans le tableau. Dans ce cas, l’événement UnknownElement ne se produit pas.

S’applique à

Produit Versions
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.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

Voir aussi