Auf Englisch lesen

Freigeben über


XmlSerializer.UnknownAttribute Ereignis

Definition

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

C#
public event System.Xml.Serialization.XmlAttributeEventHandler UnknownAttribute;

Ereignistyp

Beispiele

Im folgenden Beispiel werden Informationen zu unbekannten Attributen ausgegeben, die beim Deserialisieren eines XML-Dokuments gefunden wurden.

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("UnknownAttributes.xml");
   }
   private void Serializer_UnknownAttribute(object sender, XmlAttributeEventArgs e){
      Console.WriteLine("Unknown Attribute");
      Console.WriteLine("\t" + e.Attr.Name + " " + e.Attr.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.UnknownAttribute+=new XmlAttributeEventHandler(Serializer_UnknownAttribute);
      // 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.

Wenn der instance der Klasse, die deserialisiert wird, ein Feld enthält, das ein Array von XmlAttribute Objekten zurückgibt und ein XmlAnyAttributeAttribute auf das Feld angewendet wurde, tritt das UnknownAttribute Ereignis nicht auf. Stattdessen werden alle unbekannten XML-Attribute im Array gesammelt.

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