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

本文关键字:属性 节点 NET 文件 XML 搜索 | 更新日期: 2023-09-27 17:55:51

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

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

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

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

您可以在 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

在这里,您可以找到一些其他 XPath 示例

认为你可以做这样的事情(嗯,质朴,但你有想法),使用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);
}