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.