Cela dépend de valueRequired
va jamais avoir une valeur telle que méchante '
. Mais pour des valeurs simples, cela devrait fonctionner.
Sinon, LINQ to XML est très agréable:
// where parentNode is XElement
var node = (from el in parentNode.Elements("field1").Elements("field2")
where (string) el.Attribute("attributeName") == valueRequired
select el).FirstOrDefault();
(remplacer le (string)
avec d'autres types que nécessaire)
Voici quelque chose de similaire en utilisant LINQ sur une XmlElement:
var parentNode = node.SelectNodes("./field1/field2[@attributeName]")
.Cast<XmlElement>()
.Where(el => el.GetAttribute("attributeName") == valueRequired)
.FirstOrDefault();
L'autre option (sans tout LINQ) est simplement en boucle manuellement avec un foreach.
Le problème que vous avez avec ce type de code est que valueRequired doit être correctement échappé pour s'assurer qu'il ne casse pas la syntaxe XPATH. La proposition de Marc Gravell n'a pas ce problème - bien que je suis un grand fan de XPATH :) –
Nous avons des requêtes SQL paramétrées, mais toujours pas de XPath paramétré ... –