Lecture de données XML à l’aide de XPathDocument et XmlDocument

Il existe deux manières de lire un document XML dans l'espace de noms System.Xml.XPath. La première consiste à lire un document XML à l'aide de la classe XPathDocument en lecture seule et la seconde à lire un document XML à l'aide de la classe XmlDocument modifiable dans l'espace de noms System.Xml.

Lecture de documents XML à l’aide de la classe XPathDocument

La classe XPathDocument fournit une représentation rapide, en lecture seule et en mémoire d'un document XML à l'aide du modèle de données XPath. Des instances de la classe XPathDocument sont créées à l'aide de l'un de ses six constructeurs. Ces constructeurs permettent de lire un document XML à l’aide d’un objet Stream, TextReader ou XmlReader, ainsi que le chemin d’accès string à un fichier XML.

L'exemple suivant illustre l'utilisation du constructeur XPathDocument de la classe string en vue de la lecture d'un document XML.

Dim document As XPathDocument = New XPathDocument("books.xml")  
XPathDocument document = new XPathDocument("books.xml");  

Lecture de documents XML à l'aide de la classe XmlDocument

La classe XmlDocument est une représentation en mémoire modifiable d'un document XML qui implémente les recommandations du W3C sur les modèles objet de document (DOM) niveaux 1 et 2 (noyau). Des instances de la classe XmlDocument sont créées à l'aide de l'un de ses trois constructeurs. Pour créer un nouvel objet XmlDocument vide, vous pouvez appeler le constructeur de la classe XmlDocument sans paramètres. Après avoir appelé le constructeur, utilisez la méthode Load pour charger les données XML dans le nouvel objet XmlDocument à partir d’un objet Stream, TextReader ou XmlReader, ainsi que le chemin d’accès string à un fichier XML.

L'exemple suivant illustre l'utilisation du constructeur de la classe XmlDocument sans paramètres et de la méthode Load pour lire un document XML.

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

Détermination de l'encodage d'un document XML

Un objet XmlReader peut permettre de lire un document XML et de créer des objets XPathDocument et XmlDocument comme expliqué dans les sections précédentes. Toutefois, un objet XmlReader peut lire des données non encodées et donc ne fournir aucune information d'encodage.

La classe XmlTextReader hérite de la classe XmlReader, fournit des informations d'encodage à l'aide de sa propriété Encoding et peut permettre de créer un objet XPathDocument ou XmlDocument.

Pour plus d'informations sur les informations d'encodage fournies par la classe XmlTextReader, voir la propriété Encoding dans la documentation de référence sur la classe XmlTextReader.

Création d’objet XPathNavigator

Après avoir lu un document XML dans un objet XPathDocument ou XmlDocument, vous pouvez créer un objet XPathNavigator pour sélectionner, évaluer, parcourir et, dans certains cas, modifier les données XML sous-jacentes.

Les classes XPathDocument et XmlDocument, en plus de la classe XmlNode, implémentent l'interface IXPathNavigable de l'espace de noms System.Xml.XPath. Par conséquent, ces trois classes fournissent une méthode CreateNavigator qui retourne un objet XPathNavigator.

Modification de documents XML à l’aide de la classe XPathNavigator

La classe XPathNavigator permet non seulement de sélectionner, d'évaluer et de parcourir des données XML, mais également de modifier un document XML dans certains cas, selon l'objet qui l'a créé.

La classe XPathDocument est en lecture seule tandis que la classe XmlDocument peut être modifiée. Par conséquent, les objets XPathNavigator créés à partir d'un objet XPathDocument ne peuvent pas être utilisés pour modifier un document XML, contrairement à ceux créés par un objet XmlDocument. La classe XPathDocument doit être utilisée pour lire un document XML uniquement. Si vous devez modifier un document XML ou accéder à la fonctionnalité supplémentaire fournie par la classe XmlDocument, vous devez utiliser la classe XmlDocument, de même que pour la gestion des événements.

La propriété CanEdit de la classe XPathNavigator spécifie si un objet XPathNavigator peut modifier des données XML.

Le tableau suivant décrit la valeur de la propriété CanEdit pour chaque classe.

Implémentation IXPathNavigable Valeur CanEdit
XPathDocument false
XmlDocument true

Voir aussi