web-dev-qa-db-ja.com

'パス'を使用してXDocumentをクエリするにはどうすればよいですか?

XDocumentオブジェクトに特定のパス(例: "/ path/to/element/I/want")を照会したいのですが、続行する方法がわかりません。

23
binncheol

_System.Xml.XPath.Extensions_ のメソッドを使用してこれを行うことができます。

たとえば、単一の要素を選択する場合は、 XPathSelectElement() :を使用します。

_var element = doc.XPathSelectElement("/path/to/element/I/want");
_

クエリは、説明したような単純なパスである必要はありません。 XPath 言語を使用します。

55
svick

これはやや古い投稿ですが、LINQ-to-XMLの代わりにSystem.XML.XPathを使用して、XDocument内のパスに基づいて要素を検索できることに注意してください。

例:

var results = x.Elements("path").Elements("to").Elements("element").Elements("I").Elements("want").FirstOrDefault();

注:LINQ to XMLコマンドは、XMLの実際の構造やカーディナリティに対応するために変更する必要がある場合があります。

https://msdn.Microsoft.com/en-us/library/bb675156.aspx

5
Seymour

私は似たようなことをする必要がありました。この repo には、XPathEvaluate()を使用したXDocumentクエリのデモを行ういくつかの単体テストがあります。

0
jchristof