Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Los espacios de nombres XML incluidos en instancias de la clase XmlSerializerNamespaces deben ajustarse a la especificación del W3C (World Wide Web Consortium), en www.w3.org, denominada "Namespaces in XML".
Los espacios de nombres XML proporcionan un método para cualificar los nombres de elementos y atributos XML en documentos XML. Un nombre cualificado se compone de un prefijo y un nombre local, separados por dos puntos. El prefijo funciona únicamente como marcador de posición y está asignado a un URI que especifica un espacio de nombres. La combinación del espacio de nombres del URI administrado universalmente y el nombre local genera un nombre del que se garantiza que es universalmente único.
Al crear una instancia de XmlSerializerNamespaces y agregar pares de espacios de nombres al objeto, puede especificar los prefijos utilizados en un documento XML.
Para crear nombres cualificados en un documento XML
Cree una instancia de la clase XmlSerializerNamespaces.
Agregue todos los pares de espacios de nombres y prefijos a la instancia de XmlSerializerNamespaces.
Aplique el atributo System.Xml.Serialization apropiado a cada miembro o clase que XmlSerializer serializará en un documento XML.
Los atributos disponibles son: XmlAnyElementAttribute, XmlArrayAttribute, XmlArrayItemAttribute, XmlAttributeAttribute, XmlElementAttribute, XmlRootAttribute y XmlTypeAttribute.
Establezca el valor de la propiedad Namespace de cada atributo a uno de los valores del espacio de nombres de XmlSerializerNamespaces.
Pase XmlSerializerNamespaces al método Serialize de XmlSerializer.
En el ejemplo siguiente se crea un objeto XmlSerializerNamespaces al que se agregan dos pares de prefijo y espacio de nombres. El código crea un XmlSerializer que se utiliza para serializar una instancia de la clase Books. En el código se llama al método Serialize con XmlSerializerNamespaces, permitiendo al XML contener espacios de nombres con prefijo.
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
[C#]
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én
Herramienta Definición de esquemas XML | Presentar la serialización XML | XmlSerializer (Clase) | Atributos que controlan la serialización XML | XmlSerializerNamespaces (Clase) | Reemplazar la serialización XML