XPath "/ Tier1 / Tier2 / Setting [Name = aUniqueName]/theValue"を持つ値を返したいとします。
XDocumentを使用しているのでlinqを使用できますが、適切なエラーチェックでこの値を取得する簡単な方法はありますか?私が考えることができるのは、各層を取得し、各層がnullでないことを確認してから、次の層に進んで繰り返すことです。これは、XmlDocumentで1行のXPathを使用するよりもはるかに手間がかかるようです。
で XPath を使用できますXDocument
。XPathSelectElements
メソッドを使用します。
これがあなたのためにそれをするLINQクエリです:
var query =
from t2 in xd.Root.Elements("Tier2")
from s in t2.Elements("Setting")
where s.Attributes("Name").Any(a => a.Value == "aUniqueName")
select s.Value;
これは、ドキュメント構造が次のようになっていることを前提としています。
<Tier1>
<Tier2>
<Setting Name="aUniqueName">theValue</Setting>
</Tier2>
</Tier1>