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でXELEMENTを削除するにはどうすればよいですか?
- 2. オブジェクトをXDocumentにシリアル化するにはどうすればよいですか?
- 3. XDocumentにドキュメントタイプを追加するにはどうすればよいですか?
- 4. パスにghcjsを追加するにはどうすればよいですか?
- 5. アセットファイルのパスをStringにするにはどうすればよいですか?
- 6. XDocumentで項目を選択するにはどうすればよいですか?
- 7. XMLエスケープ形式でXDocumentの要素値を取得するにはどうすればよいですか?
- 8. XDocumentに読み込むときにエンティティを解決するにはどうすればよいですか?
- 9. 相対パスを取得するにはどうすればよいですか?
- 10. JavaScriptパスをアニメーション化するにはどうすればよいですか?
- 11. このパスをアニメーション化するにはどうすればよいですか?
- 12. MATLABパスを更新するにはどうすればよいですか?
- 13. 画像パスを取得するにはどうすればよいですか?
- 14. パスのエラーを修正するにはどうすればよいですか?
- 15. 特定のパスにリダイレクトするにはどうすればよいですか?
- 16. 複数の名前空間宣言をXDocumentに追加するにはどうすればよいですか?
- 17. Thelia:URLでカテゴリをクエリするにはどうすればよいですか?
- 18. Laravel 5でジオロケーションをクエリするにはどうすればよいですか?
- 19. 値リストでテーブルをクエリするにはどうすればよいですか?
- 20. Parse Serverでクエリをキャッシュするにはどうすればよいですか?
- 21. Oracleでクエリを構成するにはどうすればよいですか?
- 22. XDocumentのXMLコンテンツを.xmlファイルとして保存するにはどうすればよいですか?
- 23. SQLクエリをDataGridにバインドするにはどうすればよいですか?
- 24. このクエリをsargableにするにはどうすればよいですか?
- 25. クエリをストアドファンクションに変換するにはどうすればよいですか?
- 26. 2つのクエリをマージするにはどうすればよいですか?
- 27. MySQLクエリを最適化するにはどうすればよいですか?
- 28. 検索クエリを変更するにはどうすればよいですか?
- 29. 'IN'クエリを最適化するにはどうすればよいですか?
- 30. Linqクエリを最適化するにはどうすればよいですか?
[XDocumentでXPathを使う方法](http://stackoverflow.com/questions/6209841/how-to-use-xpath-with) -xdocument) –
異なるパスを選択する例、名前空間の定義がある場合とない場合の例などがあります:http://stackoverflow.com/a/38272604/5838538 – Jelgab