XDocument
LINQ to XMLを使用して XPath を引き続き使用できます。
var doc = XDocument.Load(filePath);
var myNodeList = doc.XPathSelectElements(".//node[@Attribute1 ='" & varString1 &'']/nodechild[@AttributeChildnode1 = ''& varString2 &'']");
XPathSelectElements
は、名前空間XNode
内の の拡張メソッドとして宣言されています。System.Xml.XPath
標準の Linq から XML へのバージョン
入力 XML:
<root>
<node Attribute1="GUID1">
<childnode AttributeChildNode1="var1" AttributeChildNode2="result1"></childnode>
<childnode AttributeChildNode1="var2" AttributeChildNode2="result2"></childnode>
</node>
<node Attribute1="GUID2">
<childnode AttributeChildNode1="var3" AttributeChildNode2="result3"></childnode>
<childnode AttributeChildNode1="var4" AttributeChildNode2="result4"></childnode>
</node>
</root>
クエリ:
string guid = "GUID1";
string var = "var1";
var elements = XElement.Load("Input.txt");
var value = (from node in elements.Elements("node")
where (string)node.Attribute("Attribute1") == "GUID1"
from childNode in node.Elements()
where (string)childNode.Attribute("AttributeChildNode1") == "var1"
select (string)childNode.Attribute("AttributeChildNode2")).FirstOrDefault();
と変数の値に応じてresult1
-を返します。result4
guid
var