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 : qualifier des noms d'éléments XML et des noms d'attributs XML

Exemple de code

Les espaces de noms XML contenus par les instances de la classe XmlSerializerNamespaces doivent se conformer à la spécification du World Wide Web Consortium (www.w3.org) intitulée « Namespaces in XML ».

Les espaces de noms XML offrent une méthode permettant de qualifier les noms d'éléments et d'attributs XML dans des documents XML. Un nom qualifié se compose d'un préfixe et d'un nom local, séparés par le caractère deux-points. Le préfixe joue uniquement le rôle d'espace réservé ; il est mappé à un URI (Universal Resource Identifier) qui spécifie un espace de noms. L'association entre l'espace de noms URI géré de manière universelle et le nom local génère un nom dont l'unicité universelle est garantie.

En créant une instance de XmlSerializerNamespaces et en ajoutant les paires d'espaces de noms à l'objet, vous pouvez spécifier les préfixes utilisés dans un document XML.

Pour créer des noms qualifiés dans un document XML

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

  2. Ajoutez tous les préfixes et paires d'espaces de noms à XmlSerializerNamespaces.

  3. Appliquez l'attribut System.Xml.Serialization approprié à chaque membre ou classe que XmlSerializer doit sérialiser dans un document XML.

    Les attributs disponibles sont : XmlAnyElementAttribute, XmlArrayAttribute, XmlArrayItemAttribute, XmlAttributeAttribute, XmlElementAttribute, XmlRootAttribute et XmlTypeAttribute.

  4. Donnez à la propriété Namespace de chaque attribut l'une des valeurs d'espace de noms de XmlSerializerNamespaces.

  5. Passez XmlSerializerNamespaces à la méthode Serialize de XmlSerializer.

L'exemple suivant crée un XmlSerializerNamespaces et ajoute deux paires préfixe/espace de noms à l'objet. Le code crée un XmlSerializer utilisé pour sérialiser une instance de la classe Books. Le code appelle la méthode Serialize avec XmlSerializerNamespaces, ce qui permet au code XML de contenir des espaces de noms préfixés.

using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
    
public class Run
{
    public static void Main()
    {
        Run test = new Run();
        test.SerializeObject("XmlNamespaces.xml");
    }
    public void SerializeObject(string filename)
    {
        XmlSerializer mySerializer = new XmlSerializer(typeof(Books));
        // Writing a file requires a TextWriter.
        TextWriter myWriter = new StreamWriter(filename);

        // Creates an XmlSerializerNamespaces and adds two
        // prefix-namespace pairs.
        XmlSerializerNamespaces myNamespaces = 
        new XmlSerializerNamespaces();
        myNamespaces.Add("books", "http://www.cpandl.com");
        myNamespaces.Add("money", "http://www.cohowinery.com");

        // Creates a Book.
        Book myBook = new Book();
        myBook.TITLE = "A Book Title";
        Price myPrice = new Price();
        myPrice.price = (decimal) 9.95;
        myPrice.currency = "US Dollar";
        myBook.PRICE = myPrice;
        Books myBooks = new Books();
        myBooks.Book = myBook;
        mySerializer.Serialize(myWriter,myBooks,myNamespaces);
        myWriter.Close();
    }
}

public class Books
{
    [XmlElement(Namespace = "http://www.cohowinery.com")]
    public Book Book;
}

[XmlType(Namespace ="http://www.cpandl.com")]
public class Book
{
    [XmlElement(Namespace = "http://www.cpandl.com")]
    public string TITLE;
    [XmlElement(Namespace ="http://www.cohowinery.com")]
    public Price PRICE;
}
Afficher: