Condividi tramite


Migrazione delle classi XML dalla versione 1.1

Nelle versioni di .NET Framework successive alla 1.1 sono stati apportati molti aggiornamenti alle classi XML. Per sfruttare completamente le nuove funzionalità, può essere necessario spostare il codice esistente nelle nuove API. Nelle sezioni di questo documento vengono descritte le modifiche alle API esistenti che richiedono l'aggiornamento del codice esistente.

In Microsoft .NET Framework versione 3.5 sono incluse nuove opzioni per l'elaborazione dei dati XML. Per ulteriori informazioni su tali opzioni, vedere LINQ to XML.

Creazione di XmlReader

A partire da .NET Framework versione 2.0, gli oggetti XmlReader vengono creati utilizzando il metodo statico Create sulla classe XmlReader. Un oggetto XmlReaderSettings specifica le funzionalità che si desidera siano supportate dal XmlReader creato.

NotaNota

Sebbene .NET Framework includa implementazioni concrete della classe XmlReader, ad esempio le classi XmlTextReader, XmlNodeReader e XmlValidatingReader, è consigliabile creare istanze di XmlReader tramite il metodo Create.In questo modo è possibile sfruttare completamente tutte le nuove funzionalità aggiunte alla classe XmlReader.

Versione 1.1

Nel codice seguente viene creato un oggetto XmlTextReader che ignora gli spazi vuoti e utilizza un oggetto XmlUrlResolver per risolvere l'URI del nome file.

' 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;

Versione 2.0

Nel codice seguente viene creato un oggetto XmlReader con la stessa configurazione dell'esempio precedente, utilizzando il metodo 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);

Per ulteriori informazioni, vedere Creazione di lettori XML.

Convalida XML

A partire da .NET Framework versione 2.0, le classi XmlValidatingReader e XmlSchemaCollection sono state contrassegnate come obsolete. È possibile invece utilizzare la classe XmlReaderSettings per creare un oggetto XmlReader di convalida. La classe XmlSchemaCollection viene sostituita dalla classe XmlSchemaSet.

Versione 1.1

Nel codice seguente la convalida dei dati viene eseguita tramite le classi XmlValidatingReader e 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);
}

Versione 2.0

Nel codice seguente la convalida dei dati viene eseguita tramite le classi XmlReader e 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);
}

Per ulteriori informazioni, vedere Convalida di dati XML con XmlReader e XmlSchemaSet per la compilazione di schemi.

Creazione di XmlWriter

A partire da .NET Framework versione 2.0, gli oggetti XmlWriter vengono creati utilizzando il metodo statico Create sulla classe XmlWriter. Un oggetto XmlWriterSettings specifica le funzionalità che si desidera siano supportate dal XmlWriter creato.

NotaNota

Sebbene in .NET Framework sia inclusa la classe XmlTextWriter, ovvero un'implementazione della classe XmlWriter, è consigliabile creare gli oggetti XmlWriter con il metodo Create.In questo modo è possibile sfruttare completamente tutte le nuove funzionalità aggiunte alla classe XmlWriter.

Versione 1.1

Nel codice seguente viene creato un oggetto XmlTextWriter con una determinata codifica.

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;

Versione 2.0

Nel codice seguente viene creato un oggetto XmlWriter con la stessa configurazione dell'esempio precedente, utilizzando il metodo 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);

Per ulteriori informazioni, vedere Creazione di writer XML.

Elaborazione XSLT

La classe XslCompiledTransform è il nuovo processore XSLT e sostituisce la classe XslTransform. L'enumerazione XsltSettings viene utilizzata per abilitare le impostazioni XSLT facoltative, ad esempio il supporto per gli script incorporati o la funzionalità XSLT document().

Versione 1.1

Nel codice seguente viene eseguita una trasformazione XSLT utilizzando la classe 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);

Versione 2.0

Nel codice seguente viene eseguita una trasformazione XSLT utilizzando la classe 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);

Per ulteriori informazioni, vedere Migrazione dalla classe XslTransform.

Vedere anche

Altre risorse

Documenti e dati XML