我发现搜索使用LINQ XML节点的答案,但我仅限于C#和.NET 2.搜索XML文件2
我想开一个XML文件( 〜50Kb,所有简单文本)并搜索具有特定值的属性name
的所有<Tool>
节点。
看起来好像XmlDocument.SelectNodes()
可能是我在找的东西,但我不知道XPath。这是正确的方式,如果是这样的代码是什么样子?
我发现搜索使用LINQ XML节点的答案,但我仅限于C#和.NET 2.搜索XML文件2
我想开一个XML文件( 〜50Kb,所有简单文本)并搜索具有特定值的属性name
的所有<Tool>
节点。
看起来好像XmlDocument.SelectNodes()
可能是我在找的东西,但我不知道XPath。这是正确的方式,如果是这样的代码是什么样子?
您可以XmlDocument.SelectNodes如SelectNodes("//ElementName[@AttributeName='AttributeValue']")
<root>
<element name="value1" />
<element name="value2" />
<element name="value1" />
</root>
XmlDocument xDoc = new XmlDocument();
// Load Xml
XmlNodeList nodes = xDoc.SelectNodes("//element[@name='value1']");
// nodes.Count == 2
使用XPath
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);
}
我不认为'var'是.NET2,但它很清楚。 –
@John嗯,嗯,你可以在.Net2中在一些条件下使用它:请参阅http://weblogs.asp.net/shahar/archive/2008/01/23/use-c-3-features-from-c -2-and-net-2-0-code.aspx –
这很好用,但XPath的答案更符合我的目的。 –
旧学校,仍然正常工作。 –