20

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

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

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

4

2 回答 2

40

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

于 2013-01-24T12:19:29.333 回答
3

认为您可以使用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);
}
于 2013-01-24T12:15:07.690 回答