Cómo: Especificar un nombre de elemento alternativo para una secuencia XML
Ejemplo de código
UtilizandoXmlSerializer, se puede generar más de una secuencia XML con el mismo conjunto de clases. 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. Por ejemplo, imagine dos servicios Web XML que procesan órdenes para los libros y así ambos requieren los números de ISBN. Un servicio utiliza la etiqueta <ISBN> mientras el segundo utiliza la etiqueta <BookID>. Tiene una clase denominada Book
que contiene un campo denominado 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. Para el primer servicio Web XML, esto es como esperado. 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
.
Para crear una secuencia XML con un nombre de elemento alternativo
Cree una instancia de la clase XmlElementAttribute.
Establece el ElementName de XmlElementAttribute a "BookID".
Cree una instancia de la clase XmlAttributes.
Agregue el objeto XmlElementAttribute a la colección a la que ha accedido mediante la propiedad XmlElements de XmlAttributes .
Cree una instancia de la clase XmlAttributeOverrides.
Agregue XmlAttributes a XmlAttributeOverrides, pasando el tipo del objeto para invalidarlo y el nombre de miembro invalidado.
Cree una instancia de la clase XmlSerializer con XmlAttributeOverrides.
Cree una instancia de la clase
Book
y serialice o deserialícela.
Ejemplo
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.
<Book>
<BookID>123456789</BookID>
</Book>
Vea también
Tareas
Cómo: Serializar un objeto
Cómo: Deserializar un objeto
Cómo: Deserializar un objeto
Referencia
XmlSerializer
XmlElementAttribute
XmlAttributes
XmlAttributeOverrides
Otros recursos
Fecha de compilación: 2010-03-10