J'ai besoin d'une expression LINQ pour trouver un XElement où le nom de l'élément et les attributs correspondent à un nœud d'entrée
J'ai besoin de remplacer le contenu d'un nœud dans un XElement hiérarchie lorsque le nom de l'élément et tous les noms d'attributs et les valeurs correspondent à un élément de saisie. (Si aucune correspondance n'est trouvée, le nouvel élément peut être ajouté.)
Par exemple, si mes données ressemble à ceci:
<root>
<thing1 a1="a" a2="b">one</thing1>
<thing2 a1="a" a2="a">two</thing2>
<thing2 a1="a" a3="b">three</thing2>
<thing2 a1="a">four</thing2>
<thing2 a1="a" a2="b">five</thing2>
<root>
Je veux trouver le dernier élément lorsque j'appelle une méthode de ce type d'entrée:
<thing2 a1="a" a2="b">new value</thing2>
La méthode ne devrait avoir aucun codée en dur de l'élément ou de l'attribut noms, mais il correspond à l'entrée de données.
OriginalL'auteur Wonko | 2008-10-01
Vous devez vous connecter pour publier un commentaire.
Cela correspond à tout élément donné exactement le nom de la balise et attribut des paires nom/valeur:
Pourquoi remplacer l'ensemble de l'élément? Ne pouvez-vous pas tout simplement remplacer la valeur?
Oui, dans ce cas particulier, vous pourriez tout simplement la
Value
de la propriété.OriginalL'auteur Mark Cidade
Vous pouvez faire un XPathSelectElement avec le chemin (ne pas me citer, été à la barre; nettoyer dans la matinée) /racine/thing2[@a1='a' et @a2='b'] et puis prendre .LastOrDefault() (XPathSelectElement est une méthode d'extension dans system.Linq.Xml).
Que vous obtiendrez le nœud que vous souhaitez modifier. Je ne suis pas sûr de savoir comment vous voulez le changer, cependant. Le résultat que vous obtenez est le XElement, de sorte qu'un changement il va changer l'arbre de l'élément.
OriginalL'auteur Will