Migración desde la versión 1.1 de las clases XML

Actualización: November 2007

Se han implementado numerosas actualizaciones en las clases XML en las versiones posteriores a la 1.1 de .NET Framework. Para poder beneficiarse al máximo de las nuevas características, puede que tenga que mover su código existente a las nuevas API. En las secciones de este documento se describen los cambios en las API existentes que requieren actualizar el código existente.

Microsoft .NET Framework versión 3.5 incluye nuevas opciones para procesar datos XML. Para obtener más información acerca de estas opciones, vea LINQ to XML.

Creación de XmlReader

Con la aparición de .NET Framework versión 2.0, los objetos XmlReader se crean utilizando el método estático Create de la clase XmlReader. Un objeto XmlReaderSettings especifica las características que desea que permita el XmlReader creado.

Nota:

Aunque .NET Framework incluye implementaciones concretas de la clase XmlReader como, por ejemplo, las clases XmlTextReader, XmlNodeReader y XmlValidatingReader, se recomienda crear instancias de XmlReader con el método Create. De esta manera, puede beneficiarse de todas las nuevas características que se han agregado a la clase XmlReader.

Versión 1.1

El siguiente código construye un objeto XmlTextReader que omite el espacio en blanco y utiliza un objeto XmlUrlResolver para resolver el identificador URI del nombre de archivo.

' Supply the credentials necessary to access the Web server.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Create the XmlTextReader.
Dim reader As New XmlTextReader("https://serverName/data/books.xml")
reader.WhitespaceHandling = WhitespaceHandling.None
reader.XmlResolver = resolver
// Supply the credentials necessary to access the Web server.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Create the XmlTextReader.
XmlTextReader reader = new XmlTextReader("https://serverName/data/books.xml");
reader.WhitespaceHandling = WhitespaceHandling.None;
reader.XmlResolver = resolver;

Versión 2.0

El siguiente código crea un objeto XmlReader con la misma configuración del ejemplo anterior, utilizando el método Create.

' Supply the credentials necessary to access the Web server.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Create the XmlReader.
Dim settings As New XmlReaderSettings()
settings.IgnoreWhitespace = True
settings.XmlResolver = resolver
Dim reader As XmlReader = XmlReader.Create("https://serverName/data/books.xml", settings)
// Supply the credentials necessary to access the Web server.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Create the XmlReader.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
settings.XmlResolver = resolver;
XmlReader reader = XmlReader.Create("https://serverName/data/books.xml", settings);

Para obtener más información, vea Creación de sistemas de lectura XML.

Validación XML

Con la aparición de .NET Framework versión 2.0, las clases XmlValidatingReader y XmlSchemaCollection han quedado marcadas como obsoletas. En su lugar, debería utilizar la clase XmlReaderSettings para crear un objeto XmlReader de validación. La clase XmlSchemaCollection se reemplaza por la clase XmlSchemaSet.

Versión 1.1

El siguiente código valida datos utilizando las clases XmlValidatingReader y XmlSchemaCollection.

Dim reader As New XmlValidatingReader(New XmlTextReader("books.xml"))
reader.ValidationType = ValidationType.Schema
reader.Schemas.Add("urn:books", "books.xsd")
AddHandler reader.ValidationEventHandler, AddressOf ValidationCallBack
While reader.Read()
End While
XmlValidatingReader reader = new XmlValidatingReader(new XmlTextReader("books.xml"));
reader.ValidationType = ValidationType.Schema;
reader.Schemas.Add("urn:books", "books.xsd");
reader.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
while (reader.Read());
Private Shared Sub ValidationCallBack(ByVal sender As Object, ByVal e As ValidationEventArgs) 
  Console.WriteLine("Validation Error: {0}", e.Message)  
End Sub 'ValidationCallBack
private static void ValidationCallBack(object sender, ValidationEventArgs e) {
    Console.WriteLine("Validation Error: {0}", e.Message);
}

Versión 2.0

El siguiente código valida datos utilizando las clases XmlReader y XmlSchemaSet.

Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.Schema
settings.Schemas.Add("urn:books", "books.xsd")
AddHandler settings.ValidationEventHandler, AddressOf ValidationCallBack
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
While reader.Read()
End While
XmlReaderSettings settings = new XmlReaderSettings();
settings. ValidationType = ValidationType.Schema;
settings.Schemas.Add("urn:books", "books.xsd");
settings.ValidationEventHandler += new ValidationEventHandler (ValidationCallBack);
XmlReader reader = XmlReader.Create("books.xml",settings);
while (reader.Read());
Private Shared Sub ValidationCallBack1(ByVal sender As Object, ByVal e As ValidationEventArgs) 
  Console.WriteLine("Validation Error: {0}", e.Message)  
End Sub 'ValidationCallBack1
private static void ValidationCallBack1(object sender, ValidationEventArgs e) {
    Console.WriteLine("Validation Error: {0}", e.Message);
}

Para obtener más información, vea Validación de datos XML con XmlReader y XmlSchemaSet para compilación de esquemas.

Creación de XmlWriter

Con la aparición de .NET Framework versión 2.0, los objetos XmlWriter se crean utilizando el método estático Create de la clase XmlWriter. Un objeto XmlWriterSettings especifica las características que desea que permita el XmlWriter creado.

Nota:

Aunque .NET Framework incluye la clase XmlTextWriter, que es una implementación de la clase XmlWriter, se recomienda que cree objetos XmlWriter con el método Create. De esta manera, puede beneficiarse de todas las nuevas características que se han agregado a la clase XmlWriter.

Versión 1.1

El siguiente código crea un objeto XmlTextWriter con una codificación específica.

Dim writer As New XmlTextWriter("books.xml", Encoding.Unicode)
writer.Formatting = Formatting.Indented
XmlTextWriter writer = new XmlTextWriter("books.xml", Encoding.Unicode);
writer.Formatting = Formatting.Indented;

Versión 2.0

El siguiente código crea un objeto XmlWriter con la misma configuración del ejemplo anterior, utilizando el método Create.

Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.Encoding = Encoding.Unicode
Dim writer As XmlWriter = XmlWriter.Create("books.xml", settings)
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.Encoding = Encoding.Unicode;
XmlWriter writer = XmlWriter.Create("books.xml", settings);

Para obtener más información, vea Creación de sistemas de escritura XML.

Procesamiento de XSLT

La clase XslCompiledTransform es el nuevo procesador XSLT y sustituye a la clase XslTransform. La enumeración XsltSettings se utiliza para habilitar valores XSLT opcionales como, por ejemplo, la compatibilidad con scripts incrustados o con la función document() XSLT.

Versión 1.1

El siguiente código realiza una transformación XSLT con la clase XslTransform.

' Create the XslTransform.
Dim xslt As New XslTransform()

' Create a resolver and set the credentials to use.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Load the style sheet.
xslt.Load("https://serverName/data/xsl/sort.xsl", resolver)

' Transform the file.
Dim doc As New XPathDocument(filename)
Dim writer As New XmlTextWriter("output.xml", Nothing)
xslt.Transform(doc, Nothing, writer, Nothing)
// Create the XslTransform.
XslTransform xslt = new XslTransform();

// Create a resolver and set the credentials to use.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Load the style sheet.
xslt.Load("https://serverName/data/xsl/sort.xsl", resolver);

// Transform the file.
XPathDocument doc = new XPathDocument(filename);
XmlTextWriter writer = new XmlTextWriter("output.xml", null);
xslt.Transform(doc, null, writer, null);

Versión 2.0

El siguiente código realiza una transformación XSLT con la clase XslCompiledTransform.

' Create the XslCompiledTransform object.
Dim xslt As New XslCompiledTransform()

' Create a resolver and set the credentials to use.
Dim resolver As New XmlUrlResolver()
resolver.Credentials = CredentialCache.DefaultCredentials

' Load the style sheet.
xslt.Load("https://serverName/data/xsl/sort.xsl", XsltSettings.Default, resolver)

' Transform the file.
Dim writer As XmlWriter = XmlWriter.Create("output.xml")
xslt.Transform("books.xml", writer)
// Create the XslCompiledTransform object.
XslCompiledTransform xslt = new XslCompiledTransform();

// Create a resolver and set the credentials to use.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = CredentialCache.DefaultCredentials;

// Load the style sheet.
xslt.Load("https://serverName/data/xsl/sort.xsl", XsltSettings.Default, resolver);

// Transform the file.
XmlWriter writer = XmlWriter.Create("output.xml");
xslt.Transform("books.xml", writer);

Para obtener más información, vea Migración desde la clase XslTransform.

Vea también

Otros recursos

Documentos y datos XML