XmlAnyElementAttributes.Add(XmlAnyElementAttribute) Metodo

Definizione

Aggiunge un oggetto XmlAnyElementAttribute alla raccolta.

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

Parametri

attribute
XmlAnyElementAttribute

Oggetto XmlAnyElementAttribute da aggiungere.

Restituisce

Int32

L'indice della classe XmlAnyElementAttribute appena aggiunta.

Esempio

Nell'esempio seguente viene creato un nuovo oggetto XmlAnyElementAttribute e lo aggiunge all'insieme di oggetti a cui si accede tramite la XmlAnyElements proprietà . Viene XmlAttributes quindi aggiunto a un XmlAttributeOverridesoggetto , utilizzato per creare un XmlSerializeroggetto . Viene XmlSerializer usato per serializzare o deserializzare un oggetto. Per visualizzare l'effetto dell'uso della XmlAnyElementAttributes proprietà, creare un documento XML denominato UnknownElements.xml eseguendo il SerializeObject metodo nel Main metodo . Modificare il documento risultante per includere altri elementi (sconosciuti). Aggiungere un commento alla chiamata nel Main metodo e annullare ilcommentazione SerializeObject della chiamata al DeserializeObject metodo, che stampa il nome e il valore di qualsiasi elemento XML sconosciuto.

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

Si applica a

Prodotto Versioni
.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
.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
.NET Standard 2.0, 2.1
UWP 10.0