LINQを使用してXMLノードを検索するための答えを見つけましたが、.NET 2のC#に制限されています。
単一のXMLファイル(〜50Kb、すべて単純なテキスト)を開き、特定の値を持つ属性name
を持つすべての_<Tool>
_ノードを検索したい。
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
ここ 追加の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);
}