Creazione di lettori XML
Le istanze di XmlReader vengono create utilizzando il metodo Create. La classe XmlReaderSettings consente di specificare il set di funzionalità da abilitare per l'oggetto XmlReader.
Importante |
---|
Sebbene in Microsoft .NET Framework siano incluse implementazioni complete della classe XmlReader, quali le classi XmlTextReader, XmlNodeReader e XmlValidatingReader, nella versione 2.0 di .NET Framework è consigliabile creare istanze di XmlReader utilizzando il metodo Create. |
Le funzionalità vengono abilitate o disabilitate mediante le proprietà nella classe XmlReaderSettings. L'oggetto XmlReaderSettings viene quindi passato al metodo Create.
Tramite il metodo Create e la classe XmlReaderSettings si possono ottenere i seguenti vantaggi:
È possibile specificare le funzionalità da supportare nell'oggetto XmlReader creato.
È possibile riutilizzare la classe XmlReaderSettings per creare più oggetti lettore. In tal modo è possibile utilizzare le stesse impostazioni per creare più lettori con la stessa funzionalità. Oppure è possibile modificare l'oggetto XmlReaderSettings e creare un nuovo lettore con un set di funzionalità diverso.
È possibile aggiungere funzionalità a un lettore esistente. Il metodo Create può accettare un altro oggetto XmlReader. L'oggetto sottostante XmlReader può essere un lettore definito dall'utente o un oggetto XmlTextReader, oppure un'altra istanza di XmlReader a cui potranno essere aggiunte ulteriori funzionalità.
È possibile sfruttare al massimo tutte le nuove funzionalità aggiunte alla classe XmlReader nella versione 2.0 di .NET Framework. Alcune funzionalità, quali un miglior controllo della conformità e la conformità alla raccomandazione XML 1.0, sono disponibili solo per oggetti XmlReader creati mediante il metodo Create.
Nella tabella seguente sono elencate le impostazioni predefinite delle proprietà nella classe XmlReaderSettings.
Proprietà |
Valore predefinito |
---|---|
true |
|
ConformanceLevel.Document |
|
false |
|
false |
|
false |
|
0. |
|
0 |
|
null |
|
true. Questa proprietà è obsoleta. Utilizzare invece la proprietà DtdProcessing. |
|
Oggetto XmlSchemaSet vuoto. |
|
ProcessIdentityConstraints abilitato |
|
ValidationType.None |
|
Nuovo oggetto XmlUrlResolver. |
Scenari di XmlReader
Nella tabella seguente sono descritti alcuni scenari comuni e le impostazioni da applicare nella classe XmlReaderSettings.
Scenario |
XmlReaderSettings |
---|---|
Richiede che i dati siano un documento XML in formato corretto. |
ConformanceLevel = ConformanceLevel.Document |
Richiede che i dati siano un'entità analizzata XML in formato corretto. |
ConformanceLevel = ConformanceLevel.Fragment |
Richiede che i dati siano convalidati rispetto a una DTD. |
DtdProcessing = DtdProcessing.Parse ValidationType = ValidationType.DTD |
Richiede che i dati siano convalidati rispetto a un XML Schema. |
ValidationType = ValidationType.Schema Schemas = XmlSchemaSet da utilizzare per la convalida |
Richiede che i dati siano convalidati rispetto a un XML Schema inline. |
ValidationType = ValidationType.Schema ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema |
Richiede il supporto del tipo. |
ValidationType = ValidationType.Schema Schemas = XmlSchemaSet da utilizzare |
Sono disponibili alcuni scenari speciali che possono richiedere l'utilizzo di un'implementazione di XmlReader non creata dal metodo Create.
- Se è necessario eseguire una convalida rispetto a uno schema XDR, utilizzare la classe XmlValidatingReader.
Nota |
---|
La classe XmlValidatingReader è obsoleta in .NET Framework versione 2.0.È consigliabile prendere in considerazione la possibilità di migrare a XML Schema ed eseguire la convalida utilizzando un oggetto XmlReader restituito dal metodo Create. |
Per leggere i dati XML da un oggetto XmlNode, utilizzare la classe XmlNodeReader.
Se è necessario espandere entità su richiesta (i lettori creati dal metodo Create consentono di espandere tutte le entità) o se non si desidera normalizzare il contenuto di testo, utilizzare la classe XmlTextReader.
Se non si desidera che vengano restituiti attributi predefiniti, utilizzare la classe XmlTextReader.
Per creare un'istanza di oggetto XmlReader
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);
Per includere un'istanza di lettore in un altro lettore
Dim txtReader As XmlTextReader = New XmlTextReader("bookOrder.xml")
Dim settings As New XmlReaderSettings()
settings.Schemas.Add("urn:po-schema", "PO.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create(txtReader, settings)
XmlTextReader txtReader = new XmlTextReader("bookOrder.xml");
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("urn:po-schema", "PO.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(txtReader, settings);
Per creare una catena di lettori e aggiungere ulteriori impostazioni
Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.DTD
Dim inner As XmlReader = XmlReader.Create("book.xml", settings) ' DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd")
settings.ValidationType = ValidationType.Schema
Dim outer As XmlReader = XmlReader.Create(inner, settings) ' XML Schema Validation
XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
XmlReader inner = XmlReader.Create("book.xml", settings); // DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader outer = XmlReader.Create(inner, settings); // XML Schema Validation