Lettura di dati XML con XPathDocument e XmlDocument

Sono disponibili due metodi per leggere un documento XML nello spazio dei nomi System.Xml.XPath. Un metodo consiste nel leggere un documento XML usando la classe di sola lettura XPathDocument, l'altro consiste nel leggere un documento XML usando la classe modificabile XmlDocument nello spazio dei nomi System.Xml.

Lettura di documenti XML con la classe XPathDocument

La classe XPathDocument fornisce una rappresentazione in memoria rapida e di sola lettura di un documento XML usando il modello di dati XPath. Le istanze della classe XPathDocument vengono create usando uno dei sei costruttori disponibili. Tali costruttori consentono di leggere un documento XML usando un oggetto Stream, TextReader o XmlReader nonché il percorso string di un file XML.

Nell'esempio seguente viene illustrato l'uso del costruttore XPathDocument della classe string per leggere un documento XML.

XPathDocument document = new XPathDocument("books.xml");  

Lettura di documenti XML con la classe XmlDocument Class

La classe XmlDocument è una rappresentazione in memoria modificabile di un documento XML implementando i componenti di base delle specifiche Document Object Model (DOM) Level 1 e Level 2 di W3C. Le istanze della classe XmlDocument vengono create usando uno dei tre costruttori disponibili. È possibile creare un nuovo oggetto vuoto XmlDocument chiamando il costruttore della classe XmlDocument senza parametri. Dopo che il costruttore è stato chiamato, usare il metodo Load per caricare i dati XML nel nuovo oggetto XmlDocument da un oggetto Stream, TextReader o XmlReader, oppure usare il percorso string di un file XML.

Nell'esempio seguente viene illustrato l'uso del costruttore della classe XmlDocument senza parametri e del metodo Load per leggere un documento XML.

XmlDocument document = new XmlDocument();  
document.Load("books.xml");  

Determinazione della codifica di un documento XML

È possibile usare un oggetto XmlReader per leggere un documento XML e per creare oggetti XPathDocument e XmlDocument, come illustrato nelle sezioni precedenti. Tuttavia, un oggetto XmlReader può leggere i dati non codificati e, di conseguenza, non fornisce alcuna informazione relativa alla codifica.

La classe XmlTextReader eredita dalla classe XmlReader, fornisce informazioni sulla codifica usando la relativa proprietà Encoding e può essere usata per creare un oggetto XPathDocument o un oggetto XmlDocument.

Per altre informazioni sulle informazioni di codifica fornite dalla classe XmlTextReader, vedere la proprietà Encoding nella documentazione di riferimento per la classe XmlTextReader.

Creazione di oggetti XPathNavigator

Dopo che è stato letto un documento XML in un oggetto XPathDocument o in un oggetto XmlDocument, è possibile creare un oggetto XPathNavigator per selezionare, valutare, esplorare e, in alcuni casi, modificare i dati XML sottostanti.

Sia la classe XPathDocument che la classe XmlDocument, oltre alla classe XmlNode, implementano l'interfaccia IXPathNavigable dello spazio dei nomi System.Xml.XPath. Di conseguenza, tutte le tre classi forniscono un metodo CreateNavigator che restituisce un oggetto XPathNavigator.

Modifica di documenti XML con la classe XPathNavigator

Oltre a selezionare, valutare ed esplorare i dati XML, in alcuni casi la classe XPathNavigator può essere usata per modificare un documento XML, in base all'oggetto che l'ha creato.

La classe XPathDocument è di sola lettura mentre la classe XmlDocument è modificabile. Di conseguenza non è possibile usare gli oggetti XPathNavigator creati da un oggetto XPathDocument per modificare un documento XML, mentre è possibile usare quelli creati da un oggetto XmlDocument. La classe XPathDocument deve essere usata solo per leggere un documento XML. Se è necessario modificare un documento XML o se è richiesto l'accesso a funzionalità aggiuntive fornite dalla classe XmlDocument, come la gestione degli eventi, è necessario usare la classe XmlDocument.

La proprietà CanEdit della classe XPathNavigator consente di specificare se un oggetto XPathNavigator può modificare i dati XML.

Nella tabella seguente viene descritto il valore della proprietà CanEdit per ogni classe.

Implementazione di IXPathNavigable CanEdit Valore
XPathDocument false
XmlDocument true

Vedi anche