web-dev-qa-db-ja.com

.NET 2で特定の属性値を持つノードのXMLファイルを検索する

LINQを使用してXMLノードを検索するための答えを見つけましたが、.NET 2のC#に制限されています。

単一のXMLファイル(〜50Kb、すべて単純なテキスト)を開き、特定の値を持つ属性nameを持つすべての_<Tool>_ノードを検索したい。

XmlDocument.SelectNodes()が私が探しているもののように思えますが、XPathがわかりません。これは正しい方法ですか?その場合、コードはどのようになりますか?

16
Mr. Boy

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サンプルを見つけることができます

32
Mehmet Ataş

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