在.NET 2与特定属性值的节点搜索XML文件(Search XML file for nodes

2019-07-18 15:39发布

我发现搜索使用LINQ XML节点的答案,但我仅限于C#和.NET 2。

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

好像XmlDocument.SelectNodes()可能是什么我要找的,但我不知道的XPath。 这是正确的方式,如果这样会怎样代码是什么样子?

Answer 1:

可以在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样本



Answer 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);
}


文章来源: Search XML file for nodes with specific attribute value in .NET 2