XmlAnyElementAttributes (Clase)
TOC
Collapse the table of content
Expand the table of content

XmlAnyElementAttributes (Clase)

Actualización: noviembre 2007

Representa una colección de objetos XmlAnyElementAttribute.

Espacio de nombres:  System.Xml.Serialization
Ensamblado:  System.Xml (en System.Xml.dll)

public class XmlAnyElementAttributes : CollectionBase
public class XmlAnyElementAttributes extends CollectionBase
public class XmlAnyElementAttributes extends CollectionBase

Utilice XmlAnyElementAttributes para reemplazar el comportamiento de un conjunto de objetos XmlAnyElementAttribute. Se pueden aplicar varias instancias de la clase XmlAnyElementAttribute a un miembro de la clase, mientras cada instancia tenga un valor distinto de la propiedad Name; de este modo, se instruye al XmlSerializer para que recopile los elementos desconocidos bajo el elemento con nombre de la matriz correspondiente. Por esta razón, se pueden agregar varias instancias de la clase XmlAnyElementAttribute a XmlAnyElementAttributes.

Para reemplazar un conjunto de objetos XmlAnyElementAttribute:

  1. Cree un objeto XmlAnyElementAttributes.

  2. Cree el conjunto de objetos XmlAnyElementAttribute y agregue cada objeto a la colección mediante el método Add.

  3. Cree un objeto XmlAttributes.

  4. Establezca la propiedad XmlAnyElements en XmlAnyElementAttributes.

  5. Cree un objeto XmlAttributeOverrides.

  6. Agregue XmlAttributes a XmlAttributeOverrides mediante el método Add.

  7. Cree una instancia de XmlSerializer mediante XmlAttributeOverrides.

  8. Serialice o deserialice un objeto que contenga el conjunto de objetos XmlAnyElementAttribute.

En el siguiente ejemplo, se crea un nuevo objeto XmlAnyElementAttribute que se agrega a la colección de objetos a los que se obtiene acceso mediante la propiedad XmlAnyElements. A continuación, se agrega XmlAttributes a XmlAttributeOverrides que se utiliza para crear un XmlSerializer. Se utiliza XmlSerializer para serializar o deserializar un objeto. Para ver el resultado tras utilizar la propiedad XmlAnyElementAttributes, cree un documento XML denominado UnknownElements.xml ejecutando el método SerializeObject en el método Main. Edite el documento resultante para incluir otros elementos (desconocidos). Marque como comentario la llamada a SerializeObject en el método Main y quite la marca de comentario de la llamada al método DeserializeObject, que imprime el nombre y el valor de todos los elementos XML desconocidos.

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


import System.*;
import System.IO.*;
import System.Xml.Serialization.*;
import System.Xml.*;
public class Group
{
    public String groupName;

    /** @attribute XmlAnyElement()
     */
    public Object things[];
} //Group

public class Test
{
    public static void main(String[] args)
    {
        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");
    } //main

    // t.DeserializeObject("UnknownElements.xml");
    private void SerializeObject(String fileName)
    {
        XmlSerializer ser = new XmlSerializer(Group.class.ToType());
        TextWriter writer = new StreamWriter(fileName);
        Group g = new Group();
        g.groupName = "MyGroup";
        ser.Serialize(writer, g);
        writer.Close();
    } //SerializeObject

    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.get_Length());
        for (int iCtr = 0; iCtr < g.things.get_Count(); iCtr++) {
            XmlElement xElement = (XmlElement)g.things[iCtr];
            Console.WriteLine(xElement.get_Name() + ": " 
                + xElement.get_InnerXml());
        }
    } //DeserializeObject

    private XmlSerializer CreateOverrideSerializer()
    {
        XmlAnyElementAttribute myAnyElement = new XmlAnyElementAttribute();
        XmlAttributeOverrides xOverride = new XmlAttributeOverrides();
        XmlAttributes xAtts = new XmlAttributes();
        xAtts.get_XmlAnyElements().Add(myAnyElement);
        xOverride.Add(Group.class.ToType(), "things", xAtts);
        return new XmlSerializer(Group.class.ToType(), xOverride);
    } //CreateOverrideSerializer
} //Test


System.Object
  System.Collections.CollectionBase
    System.Xml.Serialization.XmlAnyElementAttributes

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile para Smartphone, Windows Mobile para Pocket PC, Xbox 360

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 3.5, 2.0

XNA Framework

Compatible con: 2.0, 1.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2016 Microsoft