20

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

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

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

4

2 に答える 2

40

XPathは、次のようなXmlDocument.SelectNodesで使用できます。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 に答える