我找到了使用LINQ搜索XML节点的答案,但我仅限于使用.NET 2的C#。
我想打开一个XML文件(~50Kb,所有简单文本)并搜索属性<Tool>
具有特定值的所有name
个节点。
似乎XmlDocument.SelectNodes()
可能是我正在寻找的,但我不知道XPath。这是正确的方式,如果是这样,代码会是什么样的?
答案 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);
}