Procedimiento para calificar el elemento XML y los nombres del atributo XMLHow to: Qualify XML Element and XML Attribute Names

Espacios de nombres XML incluidos en instancias de la XmlSerializerNamespaces clase debe ajustarse a la especificación de World Wide Web Consortium (W3C) denominada espacios de nombres XML.XML namespaces contained by instances of the XmlSerializerNamespaces class must conform to the World Wide Web Consortium (W3C) specification called Namespaces in XML.

Los espacios de nombres XML proporcionan una método para calificar los nombres de elementos y atributos XML en documentos XML.XML namespaces provide a method for qualifying the names of XML elements and XML attributes in XML documents. Un nombre calificado se compone de un prefijo y un nombre local, separados por dos puntos.A qualified name consists of a prefix and a local name, separated by a colon. El prefijo funciona únicamente como marcador de posición y está asignado a un identificador URI que especifica un espacio de nombres.The prefix functions only as a placeholder; it is mapped to a URI that specifies a namespace. La combinación del espacio de nombres del URI, universalmente administrado, y el nombre local genera un nombre del que se garantiza que es universalmente único.The combination of the universally managed URI namespace and the local name produces a name that is guaranteed to be universally unique.

Creando una instancia de XmlSerializerNamespaces y agregando los pares de espacio de nombres al objeto, puede especificar los prefijos utilizados en un documento XML.By creating an instance of XmlSerializerNamespaces and adding the namespace pairs to the object, you can specify the prefixes used in an XML document.

Para crear nombres calificados en un documento XMLTo create qualified names in an XML document

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

  2. Agregue todos los prefijos y pares de espacio de nombres a XmlSerializerNamespaces.Add all prefixes and namespace pairs to the XmlSerializerNamespaces.

  3. Aplique el atributo apropiado System.Xml.Serialization a cada método o clase que XmlSerializer vaya a serializar en un documento XML.Apply the appropriate System.Xml.Serialization attribute to each member or class that the XmlSerializer is to serialize into an XML document.

    Los atributos disponibles son: XmlAnyElementAttribute, XmlArrayAttribute, XmlArrayItemAttribute, XmlAttributeAttribute, XmlElementAttribute, XmlRootAttribute, y XmlTypeAttribute.The available attributes are: XmlAnyElementAttribute, XmlArrayAttribute, XmlArrayItemAttribute, XmlAttributeAttribute, XmlElementAttribute, XmlRootAttribute, and XmlTypeAttribute.

  4. Establezca la propiedad Namespace de cada atributo en uno de los valores de espacio de nombres del XmlSerializerNamespaces.Set the Namespace property of each attribute to one of the namespace values from the XmlSerializerNamespaces.

  5. Pase XmlSerializerNamespaces al método Serialize de XmlSerializer.Pass the XmlSerializerNamespaces to the Serialize method of the XmlSerializer.

EjemploExample

En el siguiente ejemplo, se crea un XmlSerializerNamespaces al que se agregan dos prefijos y pares de espacio de nombres al objeto.The following example creates an XmlSerializerNamespaces, and adds two prefix and namespace pairs to the object. El código crea XmlSerializer que se utiliza para serializar una instancia de la clase Books.The code creates an XmlSerializer that is used to serialize an instance of the Books class. El código llama al método Serialize con XmlSerializerNamespaces, permitiéndole al XML contener los espacios de nombres prefijados.The code calls the Serialize method with the XmlSerializerNamespaces, allowing the XML to contain prefixed namespaces.

Option Explicit
public class Price
{
    [XmlAttribute(Namespace = "http://www.cpandl.com")]
    public string currency;
    [XmlElement(Namespace = "http://www.cohowinery.com")]
    public decimal price;
}

Option Strict

Imports System
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization

Public Class Run

    Public Shared Sub Main()
        Dim test As New Run()
        test.SerializeObject("XmlNamespaces.xml")
    End Sub 'Main

    Public Sub SerializeObject(filename As String)
        Dim mySerializer As New XmlSerializer(GetType(Books))
        ' Writing a file requires a TextWriter.
        Dim myWriter As New StreamWriter(filename)

        ' Creates an XmlSerializerNamespaces and adds two
        ' prefix-namespace pairs.
        Dim myNamespaces As New XmlSerializerNamespaces()
        myNamespaces.Add("books", "http://www.cpandl.com")
        myNamespaces.Add("money", "http://www.cohowinery.com")

        ' Creates a Book.
        Dim myBook As New Book()
        myBook.TITLE = "A Book Title"
        Dim myPrice As New Price()
        myPrice.price = CDec(9.95)
        myPrice.currency = "US Dollar"
        myBook.PRICE = myPrice
        Dim myBooks As New Books()
        myBooks.Book = myBook
        mySerializer.Serialize(myWriter, myBooks, myNamespaces)
        myWriter.Close()
    End Sub
End Class

Public Class Books
    <XmlElement([Namespace] := "http://www.cohowinery.com")> _
    Public Book As Book
End Class 'Books

<XmlType([Namespace] := "http://www.cpandl.com")> _
Public Class Book

    <XmlElement([Namespace] := "http://www.cpandl.com")> _
    Public TITLE As String
    <XmlElement([Namespace] := "http://www.cohowinery.com")> _
    Public PRICE As Price
End Class

Public Class Price
    <XmlAttribute([Namespace] := "http://www.cpandl.com")> _
    Public currency As String
    Public <XmlElement([Namespace] := "http://www.cohowinery.com")> _
        price As Decimal
End Class
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;
}

Vea tambiénSee also