Поиск XML файла для узлов с определенным значением атрибута в .NET 2
Я нашел ответы на поиск узлов XML с помощью LINQ, но я ограничен С# с .NET 2.
Я хочу открыть один XML файл (~ 50Kb, весь простой текст) и искать все узлы <Tool>
с атрибутом name
, имеющим определенное значение.
Кажется, что XmlDocument.SelectNodes()
может быть тем, что я ищу, но я не знаю XPath. Правильно ли это, и если да, то будет выглядеть код?
Ответы
Ответ 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);
}