【发布时间】:2013-01-24 12:09:11
【问题描述】:
我找到了使用 LINQ 搜索 XML 节点的答案,但我仅限于使用 .NET 2 的 C#。
我想打开一个 XML 文件(约 50Kb,所有简单文本)并搜索所有 <Tool> 具有特定值的属性 name 节点。
似乎XmlDocument.SelectNodes() 可能是我正在寻找的东西,但我不知道 XPath。这是正确的方法吗?如果是,代码会是什么样子?
【问题讨论】:
我找到了使用 LINQ 搜索 XML 节点的答案,但我仅限于使用 .NET 2 的 C#。
我想打开一个 XML 文件(约 50Kb,所有简单文本)并搜索所有 <Tool> 具有特定值的属性 name 节点。
似乎XmlDocument.SelectNodes() 可能是我正在寻找的东西,但我不知道 XPath。这是正确的方法吗?如果是,代码会是什么样子?
【问题讨论】:
您可以在 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 示例
【讨论】:
认为您可以使用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);
}
【讨论】: