Procedimiento para especificar un nombre de elemento alternativo para una secuencia XMLHow to: Specify an Alternate Element Name for an XML Stream

UtilizandoXmlSerializer, se puede generar más de una secuencia XML con el mismo conjunto de clases.Using the XmlSerializer, you can generate more than one XML stream with the same set of classes. Puede que desee proceder de esta forma ya que dos servicios Web XML diferentes requieren la misma información básica, con solo ligeras diferencias.You might want to do this because two different XML Web services require the same basic information, with only slight differences. Por ejemplo, imagine dos servicios Web XML que procesan órdenes para los libros y así ambos requieren los números de ISBN.For example, imagine two XML Web services that process orders for books, and thus both require ISBN numbers. Un servicio usa la etiqueta <ISBN> mientras el segundo usa la etiqueta <BookID>.One service uses the tag <ISBN> while the second uses the tag <BookID>. Tiene una clase denominada Book que contiene un campo denominado ISBN.You have a class named Book that contains a field named ISBN. Cuando se serializa una instancia de la clase Book, utilizará, de forma predeterminada, el nombre de miembro (ISBN) como el nombre de elemento de etiqueta.When an instance of the Book class is serialized, it will, by default, use the member name (ISBN) as the tag element name. Para el primer servicio Web XML, esto es como esperado.For the first XML Web service, this is as expected. Pero para enviar la secuencia XML al segundo servicio Web XML, debe invalidar la serialización para que el nombre de elemento de la etiqueta sea BookID.But to send the XML stream to the second XML Web service, you must override the serialization so that the tag's element name is BookID.

Para crear una secuencia XML con un nombre de elemento alternativoTo create an XML stream with an alternate element name

  1. Cree una instancia de la clase XmlElementAttribute.Create an instance of the XmlElementAttribute class.

  2. Establece el ElementName de XmlElementAttribute a "BookID".Set the ElementName of the XmlElementAttribute to "BookID".

  3. Cree una instancia de la clase XmlAttributes.Create an instance of the XmlAttributes class.

  4. Agregue el objeto XmlElementAttribute a la colección a la que ha accedido mediante la propiedad XmlElements de XmlAttributes .Add the XmlElementAttribute object to the collection accessed through the XmlElements property of XmlAttributes .

  5. Cree una instancia de la clase XmlAttributeOverrides.Create an instance of the XmlAttributeOverrides class.

  6. Agregue XmlAttributes a XmlAttributeOverrides, pasando el tipo del objeto para invalidarlo y el nombre de miembro invalidado.Add the XmlAttributes to the XmlAttributeOverrides, passing the type of the object to override and the name of the member being overridden.

  7. Cree una instancia de la clase XmlSerializer con XmlAttributeOverrides.Create an instance of the XmlSerializer class with XmlAttributeOverrides.

  8. Cree una instancia de la clase Book y serialice o deserialícela.Create an instance of the Book class, and serialize or deserialize it.

EjemploExample

Public Class SerializeOverride()  
    ' Creates an XmlElementAttribute with the alternate name.  
    Dim myElementAttribute As XmlElementAttribute = _  
    New XmlElementAttribute()  
    myElementAttribute.ElementName = "BookID"  
    Dim myAttributes As XmlAttributes = New XmlAttributes()  
    myAttributes.XmlElements.Add(myElementAttribute)  
    Dim myOverrides As XmlAttributeOverrides = New XmlAttributeOverrides()  
    myOverrides.Add(typeof(Book), "ISBN", myAttributes)  
    Dim mySerializer As XmlSerializer = _  
    New XmlSerializer(GetType(Book), myOverrides)  
    Dim b As Book = New Book()  
    b.ISBN = "123456789"  
    ' Creates a StreamWriter to write the XML stream to.  
    Dim writer As StreamWriter = New StreamWriter("Book.xml")  
    mySerializer.Serialize(writer, b);  
End Class  
public class SerializeOverride()  
{  
    // Creates an XmlElementAttribute with the alternate name.  
    XmlElementAttribute myElementAttribute = new XmlElementAttribute();  
    myElementAttribute.ElementName = "BookID";  
    XmlAttributes myAttributes = new XmlAttributes();  
    myAttributes.XmlElements.Add(myElementAttribute);  
    XmlAttributeOverrides myOverrides = new XmlAttributeOverrides();  
    myOverrides.Add(typeof(Book), "ISBN", myAttributes);  
    XmlSerializer mySerializer =   
    new XmlSerializer(typeof(Book), myOverrides)  
    Book b = new Book();  
    b.ISBN = "123456789"  
    // Creates a StreamWriter to write the XML stream to.  
    StreamWriter writer = new StreamWriter("Book.xml");  
    mySerializer.Serialize(writer, b);  
}  

La secuencia XML puede parecerse a lo siguiente.The XML stream might resemble the following.

<Book>  
    <BookID>123456789</BookID>  
</Book>  

Vea tambiénSee also