Auf Englisch lesen

Freigeben über


XmlAnyElementAttributes.Add(XmlAnyElementAttribute) Methode

Definition

Fügt der Auflistung XmlAnyElementAttribute hinzu.

C#
public int Add (System.Xml.Serialization.XmlAnyElementAttribute attribute);
C#
public int Add (System.Xml.Serialization.XmlAnyElementAttribute? attribute);

Parameter

attribute
XmlAnyElementAttribute

Das hinzuzufügende XmlAnyElementAttribute.

Gibt zurück

Der Index des neu hinzugefügten XmlAnyElementAttribute.

Beispiele

Im folgenden Beispiel wird eine neue XmlAnyElementAttribute erstellt und der Auflistung von Objekten hinzugefügt, auf die über die XmlAnyElements -Eigenschaft zugegriffen wird. Wird XmlAttributes dann zu einer XmlAttributeOverrideshinzugefügt, die verwendet wird, um eine XmlSerializerzu erstellen. Wird XmlSerializer verwendet, um ein Objekt zu serialisieren oder zu deserialisieren. Um die Auswirkungen der Verwendung der XmlAnyElementAttributes -Eigenschaft zu sehen, erstellen Sie ein XML-Dokument mit dem Namen UnknownElements.xml, indem Sie die SerializeObject -Methode in der Main -Methode ausführen. Bearbeiten Sie das resultierende Dokument, um andere (unbekannte) Elemente einzuschließen. Kommentieren Sie den SerializeObject Aufruf in der Main -Methode aus, und heben Sie die Auskommentierung des Aufrufs der DeserializeObject -Methode auf, die den Namen und Den Wert eines unbekannten XML-Elements ausgibt.

C#
using System;
using System.IO;
using System.Xml.Serialization;
using System.Xml;

public class Group{
   public string GroupName;
   [XmlAnyElement]
   public object[]Things;
}

public class Test{
   static void Main(){
      Test t = new Test();
      // 1 Run this and create the XML document.
      // 2 Add new elements to the XML document.
      // 3 Comment out the new line, and uncomment
      // the DeserializeObject line to deserialize the
      // XML document and see unknown elements.
      t.SerializeObject("UnknownElements.xml");
     
      // t.DeserializeObject("UnknownElements.xml");
   }

   private void SerializeObject(string filename){
      XmlSerializer ser = new XmlSerializer(typeof (Group));
      TextWriter writer = new StreamWriter(filename);
      Group g = new Group();
      g.GroupName = "MyGroup";
      ser.Serialize(writer, g);
      writer.Close();
   }

   private void DeserializeObject(string filename){

      XmlSerializer ser = CreateOverrideSerializer();
      // A FileStream is needed to read the XML document.
      FileStream fs = new FileStream(filename, FileMode.Open);
     Group g = (Group)
        ser.Deserialize(fs);
     fs.Close();
     Console.WriteLine(g.GroupName);
     Console.WriteLine(g.Things.Length);
     foreach(XmlElement xelement in g.Things){
     Console.WriteLine(xelement.Name + ": " + xelement.InnerXml);
     }
   }

   private XmlSerializer CreateOverrideSerializer(){
      XmlAnyElementAttribute myAnyElement = 
      new XmlAnyElementAttribute();
      XmlAttributeOverrides xOverride = 
      new XmlAttributeOverrides();
      XmlAttributes xAtts = new XmlAttributes();
      xAtts.XmlAnyElements.Add(myAnyElement);
      xOverride.Add(typeof(Group), "Things", xAtts);
      return new XmlSerializer(typeof(Group) , xOverride);
   }
}

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, 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
UWP 10.0