utiliser LINQ sur XmlNodeList
<X version="1.0">
<Y id="abc" abv="a"/>
<Y id="edf" abv="e"/>
</X>
Je veux sélectionner le nœud dont l'id est "abc", et le retour de son titre "un".
XmlDocument doc = new XmlDocument();
doc.Load(filePath);
XmlNodeList list = doc.SelectNodes("X/Y");
var node = list.Cast<XmlNode>().Where(node => node["id"].InnerText == "abc")
.Select(x=>x["abv"].InnerText);
Mais il ne fonctionne pas, nœud["id"].InnerText est toujours "". Pouvez-vous où est-elle un problème?
Merci beaucoup
Eh bien, votre nœud xml n'a pas de texte interne.
Merci, vraiment utile
<Y id="abc" abv="a">This is the inner text</y>
. J'ai oublié la propriété exacte, mais c'est probablement quelque chose comme node.Attributes["id"].Value == "abc"
et Select(x => x.Attributes["abv"].Value)
Merci, vraiment utile
OriginalL'auteur ZHE.ZHAO | 2015-12-01
Vous devez vous connecter pour publier un commentaire.
La
InnerText
pour un nœud est le texte qui apparaît entre<node>
et</node>
. Donc, pour, par exemple,<Y attributes />
il n'y a pas de texte interne.Vous devez utiliser
node => node.Attributes["id"].Value == "abc"
OriginalL'auteur David Arno
Mis à part le fait que votre extrait de code ne serait pas compilé en raison de pas unique
node
variable (d'abord à l'extérieur de la requête linq aтd deuxième dans le "où" la méthode lambda), vous avez aussi ratéAttributes
dans votre requête.Il devrait être quelque chose comme
OriginalL'auteur Andy Korneyev