Existe-t-il une méthode simple pour analyser les fichiers XML en C# ? Si oui, laquelle ?
Réponses
Trop de publicités?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.
J'utiliserais LINQ to XML si vous utilisez .NET 3.5 ou une version ultérieure.
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.
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.
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.