XDocument
オブジェクトを特定のパス(たとえば、「/ path/to/element/I/want」)に照会したいが、続行する方法がわからない。これに似た「パス」でXDocumentをクエリするにはどうすればよいですか?
18
A
答えて
2
soemthingはうまくいくかもしれない:
var path = "/path/to/element/I/want";
var route = path.Split(new []{'/'}, StringSplitOptions.RemoveEmptyEntries);
XElement result = null;
foreach (var node in route)
{
if (result == null)
{
result = _xmlDocument.Element(node);
}
else
{
result = result.Element(node);
}
}
return result;
+1
'RemoveEmptyEntries'は良い考えではありません。' // 'はXPathで特定の意味を持ち、すべての子孫を検索します。 – svick
41
あなたはこれを行うにはSystem.Xml.XPath.Extensions
からメソッドを使用することができます。あなたは、単一の要素を選択したい場合は
たとえば、あなたがXPathSelectElement()
を使用します。
var element = doc.XPathSelectElement("/path/to/element/I/want");
クエリはあなたが説明するもののような単純なパスである必要はありません、彼らはXPath言語を使用しています。
4
これは多少古いポストであっても、LINQ-to-XML
例XDocument
内のパスに基づいて要素を検索することがSystem.XML.XPath
の代替として使用することができることに留意すべきである。
var results = x.Elements("path").Elements("to").Elements("element").Elements("I").Elements("want").FirstOrDefault();
注意:LINQ to XMLコマンドは、XMLの実際の構造および/またはカーディナリティに対応するために変更する必要があります。
0
私は似た何かをする必要がありました。このrepoには、XPathEvaluate()で照会するXDocumentをデモンストレーションするいくつかのユニットテストがあります。
関連する問題
- 1. XDocumentにドキュメントタイプを追加するにはどうすればよいですか?
- 2. オブジェクトをXDocumentにシリアル化するにはどうすればよいですか?
- 3. MATLABパスを更新するにはどうすればよいですか?
- 4. XDocumentで項目を選択するにはどうすればよいですか?
- 5. Oracleでクエリを構成するにはどうすればよいですか?
- 6. XDocumentに読み込むときにエンティティを解決するにはどうすればよいですか?
- 7. 複数の名前空間宣言をXDocumentに追加するにはどうすればよいですか?
- 8. このクエリをsargableにするにはどうすればよいですか?
- 9. SQLクエリをDataGridにバインドするにはどうすればよいですか?
- 10. XDocumentのXMLコンテンツを.xmlファイルとして保存するにはどうすればよいですか?
- 11. 検索クエリを変更するにはどうすればよいですか?
- 12. MySQLクエリを最適化するにはどうすればよいですか?
- 13. クエリのパラメータを表示するにはどうすればよいですか?
- 14. 2つのクエリをマージするにはどうすればよいですか?
- 15. Linqクエリを最適化するにはどうすればよいですか?
- 16. Perlプログラムの絶対パスを相対パスから取得するにはどうすればよいですか?
- 17. 単一パスから上位パスを取得するにはどうすればよいですか?
- 18. LLVMパスから既存の関数パスを使用するにはどうすればよいですか?
- 19. サブフォームのデータシートモードでクエリを開くにはどうすればよいですか?
- 20. 絶対パスでエイリアスをすばやく作成するにはどうすればよいですか?
- 21. パスを設定するにはどうすればいいですか?
- 22. Gjsコードにパスを含めるにはどうすればいいですか?
- 23. クエリの途中でSQLクエリから結果メッセージデータをクリアするにはどうすればよいですか?
- 24. Cassandraでcliクエリをコンポジットキーでクエリするにはどうすればよいですか?
- 25. XDocumentをクエリする際にクラスをデータモデルとして使用するにはどうすればよいですか?
- 26. OPENROWSETでテーブルに格納されたパスを使用するにはどうすればよいですか?
- 27. ドメインモデルで表現できないクエリはどうすればよいですか?
- 28. NHibernateクエリがサブクラスを返さないようにするにはどうすればよいですか?
- 29. 不可能:アーカイブされていないパスを取得するにはどうすればよいですか?
- 30. 次のクエリで前のクエリの結果を使用するにはどうすればよいですか?
[XDocumentでXPathを使う方法](http://stackoverflow.com/questions/6209841/how-to-use-xpath-with) -xdocument) –
異なるパスを選択する例、名前空間の定義がある場合とない場合の例などがあります:http://stackoverflow.com/a/38272604/5838538 – Jelgab