Подтвердить что ты не робот

Поиск XML файла для узлов с определенным значением атрибута в .NET 2

Я нашел ответы на поиск узлов XML с помощью LINQ, но я ограничен С# с .NET 2.

Я хочу открыть один XML файл (~ 50Kb, весь простой текст) и искать все узлы <Tool> с атрибутом name, имеющим определенное значение.

Кажется, что XmlDocument.SelectNodes() может быть тем, что я ищу, но я не знаю XPath. Правильно ли это, и если да, то будет выглядеть код?

4b9b3361

Ответ 1

Вы можете использовать XPath в XmlDocument.SelectNodes, например SelectNodes("//ElementName[@AttributeName='AttributeValue']")

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

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

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

Здесь вы можете найти некоторые дополнительные образцы XPath

Ответ 2

Думаю, вы могли бы сделать что-то подобное (ну, деревенский, но у вас есть идея), используя 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);
}