Assembly: System.Xml (in system.xml.dll)
Public MustInherit Class XmlReader Implements IDisposable
Dim instance As XmlReader
public abstract class XmlReader : IDisposable
public ref class XmlReader abstract : IDisposable
public abstract class XmlReader implements IDisposable
public abstract class XmlReader implements IDisposable
La classe XmlReader fornisce accesso in sola lettura di tipo forward-only a un flusso di dati XML. La classe XmlReader è conforme a W3C Extensible Markup Language (XML) 1.0 e agli spazi dei nomi nelle raccomandazioni XML.
Il nodo corrente corrisponde al nodo sul quale è posizionato il visualizzatore. Il visualizzatore viene spostato in avanti utilizzando uno dei metodi di lettura disponibili, mentre le proprietà riflettono il valore del nodo corrente.
Importante: |
|---|
| Sebbene Microsoft .NET Framework includa implementazioni concrete della classe XmlReader, ad esempio le classi XmlTextReader, XmlNodeReader e XmlValidatingReader, nella versione 2.0 è consigliabile creare istanze di XmlReader utilizzando il metodo Create. Per ulteriori informazioni, vedere Creazione di lettori XML. |
La classe XmlReader genera un'XmlException in caso di errori di analisi XML. Lo stato di un visualizzatore in seguito alla generazione di un errore non è prevedibile. Il tipo di nodo indicato può ad esempio essere diverso rispetto al tipo di nodo effettivo del nodo corrente. Utilizzare la proprietà ReadState per controllare se il visualizzatore si trova in stato di errore.
Per ulteriori informazioni sulla classe XmlReader, vedere Lettura di XML con XmlReader.
Considerazioni sulla protezione
Quando si utilizza la classe XmlReader, è opportuno tenere in considerazione gli elementi riportati di seguito.
-
Le eccezioni generate dalla classe XmlReader possono rivelare informazioni sui percorsi che è preferibile non propagare all'applicazione. Le applicazioni devono intercettare le eccezioni ed elaborarle in modo appropriato.
-
Non attivare l'elaborazione DTD se si desidera evitare problemi di "Denial of Service" oppure se si utilizzano fonti non attendibili. L'elaborazione DTD viene disattivata per impostazione predefinita per gli oggetti XmlReader creati dal metodo Create.
Se è attivata l'elaborazione DTD, è possibile utilizzare il metodo XmlSecureResolver per limitare il numero delle risorse a cui la classe XmlReader può accedere. È anche possibile progettare l'applicazione in modo da specificare vincoli di memoria e di tempo per l'elaborazione XML. Configurare, ad esempio, limiti di timeout nell'applicazione ASP.NET.
-
I dati XML possono includere riferimenti a risorse esterne come file di schema. Per impostazione predefinita, le risorse esterne vengono risolte utilizzando un oggetto XmlUrlResolver senza credenziali utente. È possibile migliorare i livelli di protezione mediante una delle seguenti operazioni:
-
Limitando le risorse a cui la classe XmlReader può accedere impostando la proprietà XmlReaderSettings.XmlResolver su un oggetto XmlSecureResolver.
-
Non consentendo alla classe XmlReader di aprire risorse esterne impostando la proprietà XmlReaderSettings.XmlResolver su riferimento null (Nothing in Visual Basic).
-
-
I dati XML possono contenere un grande numero di attributi, dichiarazioni di spazi dei nomi, elementi nidificati e altri elementi la cui elaborazione richiede una notevole quantità di tempo. Per limitare le dimensioni dell'input inviato alla classe XmlReader, creare un'implementazione personalizzata di IStream e fornirla alla classe XmlReader.
-
Il metodo ReadValueChunk può essere utilizzato per gestire flussi di dati di grandi dimensioni. Questo metodo legge un numero limitato di caratteri alla volta invece di allocare una singola stringa per l'intero valore.
-
Quando viene letto un documento XML con un numero elevato di nomi univoci locali, spazi dei nomi o prefissi, può verificarsi un problema. Se si utilizza una classe che deriva da XmlReader e si chiama la proprietà LocalName, Prefix o NamespaceUri per ciascun elemento, la stringa restituita viene aggiunta alla classe NameTable. Le dimensioni dell'insieme contenuto nella classe NameTable non diminuiscono mai, creando una "perdita di memoria" virtuale degli handle di stringa. Questo problema può essere limitato derivando dalla classe NameTable e stabilendo una dimensione massima. Non è possibile impedire l'utilizzo della classe NameTable o il passaggio alla classe NameTable quando la memoria è piena. Un altro metodo per limitare il problema consiste nell'evitare di utilizzare le proprietà citate e impiegare invece il metodo MoveToAttribute con il metodo IsStartElement quando possibile; questi metodi non restituiscono stringhe e non provocano quindi problemi di superamento della capacità dell'insieme NameTable.
System.Xml.XmlReader
System.Xml.XmlNodeReader
System.Xml.XmlTextReader
System.Xml.XmlValidatingReader
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.
.NET Framework
Supportato in: 2.0 1.1 1.0.NET Compact Framework
Supportato in: 2.0 1.0Riferimenti
Membri XmlReaderSpazio dei nomi System.Xml
Altre risorse
Documenti e dati XMLProtezione e applicazioni System.Xml
Importante: