492 votes

Comment analyser les fichiers XML ?

Existe-t-il une méthode simple pour analyser les fichiers XML en C# ? Si oui, laquelle ?

307voto

Lukas Šalkauskas Points 5750

C'est très simple. Je sais qu'il s'agit de méthodes standard, mais vous pouvez créer votre propre bibliothèque pour mieux gérer cela.

Voici quelques exemples :

XmlDocument xmlDoc= new XmlDocument(); // Create an XML document object
xmlDoc.Load("yourXMLFile.xml"); // Load the XML document from the specified file

// Get elements
XmlNodeList girlAddress = xmlDoc.GetElementsByTagName("gAddress");
XmlNodeList girlAge = xmlDoc.GetElementsByTagName("gAge"); 
XmlNodeList girlCellPhoneNumber = xmlDoc.GetElementsByTagName("gPhone");

// Display the results
Console.WriteLine("Address: " + girlAddress[0].InnerText);
Console.WriteLine("Age: " + girlAge[0].InnerText);
Console.WriteLine("Phone Number: " + girlCellPhoneNumber[0].InnerText);

Il y a aussi quelques autres méthodes de travailler avec. Par exemple, aquí . Je pense qu'il n'existe pas de méthode unique pour y parvenir ; vous devez toujours choisir vous-même ce qui vous convient le mieux.

240voto

Jon Galloway Points 28243

J'utiliserais LINQ to XML si vous utilisez .NET 3.5 ou une version ultérieure.

47voto

David Schmitt Points 29384

Utiliser un bon Schéma XSD pour créer un ensemble de classes avec xsd.exe et utiliser un XmlSerializer pour créer un arbre d'objets à partir de votre XML et vice versa. Si vous avez peu de restrictions sur votre modèle, vous pouvez même essayer de créer une correspondance directe entre vos classes de modèle et le XML avec les Xml*Attributes.

Il y a un article d'introduction à la sérialisation XML sur MSDN.

Conseil de performance : Construire un XmlSerializer est coûteux. Conservez une référence à votre XmlSerializer si vous avez l'intention d'analyser/écrire plusieurs fichiers XML.

24voto

Simon Steele Points 8344

Si vous traitez une grande quantité de données (plusieurs mégaoctets), il est préférable d'utiliser la fonction XmlReader pour analyser le XML en continu.

Autre chose ( XPathNavigator , XElement , XmlDocument et même XmlSerializer si vous conservez l'intégralité du graphe d'objets généré) se traduira par utilisation élevée de la mémoire et un temps de chargement très lent.

Bien entendu, si vous avez de toute façon besoin de toutes les données en mémoire, vous n'avez pas vraiment le choix.

18voto

Vinko Vrsalovic Points 116138

Utilisation XmlTextReader , XmlReader , XmlNodeReader et le System.Xml.XPath l'espace de noms. Et ( XPathNavigator , XPathDocument , XPathExpression , XPathnodeIterator ).

En général XPath facilite la lecture de XML, ce que vous recherchez peut-être.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X