Comment lire XML en .NET?

Noob XML ici! J’ai donc des données XML:

    Something happened here: Line 1, position 1.     

Comment puis-je obtenir la liste des “erreurs” où je peux avoir access au “code d’erreur” et à la description textuelle suivante …? De plus, j’utilise .net4.0 en c # … merci!

Chargez le fichier XML dans un document XmlDocument , puis utilisez les requêtes xpath pour extraire les données dont vous avez besoin.

Par exemple

 XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlssortingng); XmlNode errorNode = doc.DocumentElement.SelectSingleNode("/DataChunk/ResponseChunk/Errors/error"); ssortingng errorCode = errorNode.Atsortingbutes["code"].Value; ssortingng errorMessage = errorNode.InnerText; 

S’il existe un risque que le XML ait plusieurs éléments d’erreur, vous pouvez utiliser SelectNodes pour obtenir un XmlNodeList contenant tous les éléments de ce xpath. Par exemple:

 XmlDocument doc = new XmlDocument(); doc.LoadXml(xmlssortingng); XmlNodeList errorNodes = doc.DocumentElement.SelectNodes("/DataChunk/ResponseChunk/Errors/error"); foreach(XmlNode errorNode in errorNodes) { ssortingng errorCode = errorNode.Atsortingbutes["code"].Value; ssortingng errorMessage = errorNode.InnerText; } 

Option 2

Si vous disposez d’un schéma XML pour le fichier XML, vous pouvez le lier à une classe (à l’aide de l’outil .NET xsd.exe). Une fois que vous avez cela, vous pouvez désérialiser le XML en un object et le manipuler à partir de cet object plutôt que le XML brut. C’est un sujet entier en lui-même, donc si vous avez le schéma, cela vaut la peine de l’examiner.

Vous pouvez utiliser Linq to XML :

 var doc = XDocument.Parse(xml); var errors = from e in doc.Descendants("error") select new { code = e.Atsortingbute("code").Value, msg = e.Value.Trim() }; foreach (var e in errors) { // use e.code & e.msg } 

Si votre XML d’entrée est très volumineux , il serait peut-être préférable de parcourir le document avec un XMLReader .

 XmlReader xmlReader = XmlReader.Create(new SsortingngReader(response)); AmortizationCalculatorBE amortization = new AmortizationCalculatorBE(); List paymentList = new List(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(new SsortingngReader(response)); XmlNodeList nodeList = xmlDoc.DocumentElement.SelectNodes("response/amortizationschedule/payment"); XmlNodeList nodeList2 = xmlDoc.DocumentElement.SelectNodes("response"); foreach (XmlNode node in nodeList) { PaymentCalculator payment = new PaymentCalculator(); payment.beginningbalance = node.SelectSingleNode("beginningbalance").InnerText; payment.principal = node.SelectSingleNode("principal").InnerText; payment.interest = node.SelectSingleNode("interest").InnerText; paymentList.Add(payment); } amortization._PaymentCalculator = paymentList; foreach (XmlNode node in nodeList2) { amortization.totalprincipal = node.SelectSingleNode("totalprincipal").InnerText; amortization.totalinterest = node.SelectSingleNode("totalinterest").InnerText; }