web-dev-qa-db-fra.com

Rechercher dans le fichier XML des nœuds avec une valeur d'attribut spécifique dans .NET 2

J'ai trouvé des réponses à la recherche de nœuds XML à l'aide de LINQ, mais je suis limité à C # avec .NET 2.

Je souhaite ouvrir un seul fichier XML (~ 50 Ko, tout le texte simple) et rechercher tous les nœuds <Tool> avec l'attribut name ayant une valeur spécifique.

Il semble que XmlDocument.SelectNodes() pourrait être ce que je recherche, mais je ne connais pas XPath. Est-ce la bonne façon et si oui, à quoi ressemblerait le code?

15
Mr. Boy

Vous pouvez utiliser XPath dans XmlDocument.SelectNodes tels que: SelectNodes("//ElementName[@AttributeName='AttributeValue']")

Échantillon Xml:

<root>
    <element name="value1" />
    <element name="value2" />
    <element name="value1" />
</root>

Échantillon C #:

XmlDocument xDoc = new XmlDocument();
// Load Xml

XmlNodeList nodes = xDoc.SelectNodes("//element[@name='value1']");
// nodes.Count == 2

Ici vous pouvez trouver quelques exemples XPath supplémentaires

31
Mehmet Ataş

pense que tu pourrais faire quelque chose comme ça (bon, rustique, mais tu as l'idée) en utilisant GetElementsByTagName

var myDocument = new XmlDocument();
myDocument.Load(<pathToYourFile>);
var nodes = myDocument.GetElementsByTagName("Tool");
var resultNodes = new List<XmlNode>();
foreach (XmlNode node in nodes)
{
    if (node.Attributes != null && node.Attributes["name"] != null && node.Attributes["name"].Value == "asdf")
    resultNodes.Add(node);
}
1
Raphaël Althaus