Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais

Comment : spécifier un nom d'élément différent pour un flux XML

Exemple de code

Via XmlSerializer, vous pouvez générer plusieurs flux de données XML avec un même ensemble de classes. Vous pouvez procéder ainsi car deux services Web XML différents nécessitent les mêmes informations de base, avec seulement de légères différences. Par exemple, imaginez deux services Web XML qui traitent des commandes de livres. Ils nécessitent donc tous les deux des numéros ISBN. Un service utilise la balise <ISBN> tandis que l'autre utilise la balise <BookID>. Vous disposez d'une classe nommée Book qui contient un champ nommé ISBN. Lorsqu'une instance de la classe Book est sérialisée, elle utilise par défaut le nom de membre (ISBN) comme nom d'élément de balise. Pour le premier service Web XML, c'est ce qui est prévu. Toutefois, pour envoyer le flux de données XML au deuxième service Web XML, vous devez substituer la sérialisation afin que le nom d'élément de la balise soit BookID.

Pour créer un flux de données XML avec un nom d'élément différent

  1. Créez une instance de la classe XmlElementAttribute.

  2. Affectez "BookID" à ElementName de XmlElementAttribute.

  3. Créez une instance de la classe XmlAttributes.

  4. Ajoutez l'objet XmlElementAttribute à la collection accessible via la propriété XmlElements de XmlAttributes.

  5. Créez une instance de la classe XmlAttributeOverrides.

  6. Ajoutez XmlAttributes à XmlAttributeOverrides, en passant le type de l'objet à substituer et le nom du membre substitué.

  7. Créez une instance de la classe XmlSerializer avec XmlAttributeOverrides.

  8. Créez une instance de la classe Book et sérialisez ou désérialisez-la.

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

Le flux de données XML peut se présenter comme suit.

<Book>
    <BookID>123456789</BookID>
</Book>
Afficher: