Comment lire la valeur d’atsortingbut de XmlNode en C #?

Supposons que je dispose d’un XmlNode et que je veuille obtenir la valeur d’un atsortingbut nommé “Name”. Comment puis je faire ça?

XmlTextReader reader = new XmlTextReader(path); XmlDocument doc = new XmlDocument(); XmlNode node = doc.ReadNode(reader); foreach (XmlNode chldNode in node.ChildNodes) { **//Read the atsortingbute Name** if (chldNode.Name == Employee) { if (chldNode.HasChildNodes) { foreach (XmlNode item in node.ChildNodes) { } } } } 

Document XML:

     

Essaye ça:

 ssortingng employeeName = chldNode.Atsortingbutes["Name"].Value; 

Pour développer la solution de Konamiman (y compris toutes les vérifications nulles pertinentes), voici ce que je faisais:

 if (node.Atsortingbutes != null) { var nameAtsortingbute = node.Atsortingbutes["Name"]; if (nameAtsortingbute != null) return nameAtsortingbute.Value; throw new InvalidOperationException("Node 'Name' not found."); } 

vous pouvez parcourir tous les atsortingbuts comme vous le faites avec les nœuds

 foreach (XmlNode item in node.ChildNodes) { // node stuff... foreach (XmlAtsortingbute att in item.Atsortingbutes) { // atsortingbute stuff } } 

Si tout ce dont vous avez besoin, ce sont les noms, utilisez plutôt xpath. Pas besoin de faire l’itération vous-même et de vérifier la nullité.

 ssortingng xml = @"      "; var doc = new XmlDocument(); //doc.Load(path); doc.LoadXml(xml); var names = doc.SelectNodes("//Employee/@name"); 

Utilisation

 item.Atsortingbutes["Name"].Value; 

pour obtenir la valeur.

Si vous utilisez chldNode comme XmlElement au lieu de XmlNode , vous pouvez utiliser

 var atsortingbuteValue = chldNode.GetAtsortingbute("Name"); 

La valeur de retour sera simplement une chaîne vide , au cas où le nom de l’atsortingbut n’existe pas.

Donc, votre boucle pourrait ressembler à ceci:

 XmlDocument document = new XmlDocument(); var nodes = document.SelectNodes("//Node/N0de/node"); foreach (XmlElement node in nodes) { var atsortingbuteValue = node.GetAtsortingbute("Name"); } 

Cela sélectionnera tous les noeuds entourés par les puis les et lira l’atsortingbut “Name”.

Vous pouvez également utiliser ceci;

 ssortingng employeeName = chldNode.Atsortingbutes().ElementAt(0).Name 

Encore une autre solution:

 ssortingng s = "??"; // or whatever if (chldNode.Atsortingbutes.Cast() .Select(x => x.Value) .Contains(atsortingbuteName)) s = xe.Atsortingbutes[atsortingbuteName].Value; 

Il évite également l’exception lorsque l’atsortingbut attendu atsortingbuteName n’existe pas.