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

时间:2013-01-24 12:09:12

标签: c# xpath visual-studio-2005 .net-2.0

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

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

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

2 个答案:

答案 0 :(得分:31)

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

Xml示例:

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

C#示例:

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

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

Here你可以找到一些额外的XPath样本

答案 1 :(得分: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);
}