在.NET 2中搜索具有特定属性值的节点的XML文件

我找到了使用LINQ搜索XML节点的答案,但我仅限于使用.NET 2的C#。

我想打开一个XML文件(~50Kb,所有简单文本)并搜索属性name具有特定值的所有节点。

看起来像XmlDocument.SelectNodes()可能是我正在寻找的,但我不知道XPath。 这是正确的方法,如果是这样,代码会是什么样的?

您可以在XmlDocument.SelectNodes中使用XPath,例如: SelectNodes("//ElementName[@AttributeName='AttributeValue']")

Xml示例:

      

C#示例:

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

在这里,您可以找到一些额外的XPath示例

认为你可以做那样的事情(嗯,质朴,但你有这个想法),使用GetElementsByTagName

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