Tôi muốn truy vấn đối tượng XDocument
cho một đường dẫn cụ thể, (ví dụ: "/ path/to/element/I/want") nhưng tôi không biết cách tiếp tục.Làm cách nào để truy vấn XDocument bằng 'đường dẫn'?
Trả lời
soemthing tương tự như điều này có thể làm việc:
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;
'RemoveEmptyEntries' không phải là một ý tưởng hay,' // 'có một ý nghĩa cụ thể trong XPath và nó tìm kiếm tất cả các hậu duệ. – svick
Bạn có thể sử dụng phương pháp từ System.Xml.XPath.Extensions
để làm điều này.
Ví dụ, nếu bạn muốn chọn một yếu tố duy nhất, bạn sẽ sử dụng XPathSelectElement()
:
var element = doc.XPathSelectElement("/path/to/element/I/want");
Các truy vấn không phải là con đường đơn giản như những gì bạn mô tả, họ sử dụng ngôn ngữ XPath.
Mặc dù đây là một bài hơi cũ, cần lưu ý rằng LINQ-to-XML
có thể được sử dụng như là một thay thế cho System.XML.XPath
để tìm các yếu tố dựa trên một con đường trong một Ví dụ XDocument
:
var results = x.Elements("path").Elements("to").Elements("element").Elements("I").Elements("want").FirstOrDefault();
Lưu ý: Lệnh LINQ to XML có thể cần phải được thay đổi để phù hợp với cấu trúc thực tế và/hoặc cardinality của XML.
Tôi cần làm điều tương tự. Điều này repo có một số bài kiểm tra đơn vị demoing truy vấn XDocument với XPathEvaluate()
- 1. Cách tốt nhất để truy vấn XDocument bằng LINQ?
- 2. Làm cách nào để vẽ đường dẫn bằng bitmap?
- 3. Tên đường dẫn Apache mod_rewrite làm thông số truy vấn?
- 4. Tên tệp/đường dẫn truy vấn hiện tại trong LINQPad
- 5. Làm cách nào để chuyển đổi đường dẫn đầy đủ sang đường dẫn tương đối bằng cách sử dụng perl?
- 6. Truy vấn XDocument với thuộc tính xmlns (không gian tên)
- 7. Làm thế nào để truy vấn NOT NULL bằng Doctrine?
- 8. Phân tích đường dẫn NSURL và truy vấn (iphoneOS)
- 9. Làm cách nào để sử dụng đường dẫn tương đối trong XDocument.Load?
- 10. Làm cách nào để ghi đè đường dẫn của PHP để sử dụng đường dẫn MAMP?
- 11. HTTPS, đường dẫn URL và chuỗi truy vấn
- 12. Làm thế nào tôi có thể truy vấn đường dẫn đến tệp nhật ký NLog?
- 13. Làm cách nào để chuyển đổi đường dẫn bằng ký tự ổ đĩa sang đường dẫn UNC
- 14. Truy cập các pixel dọc theo đường cong/đường dẫn bằng cách sử dụng opencv
- 15. Làm cách nào để nhập đường dẫn có khoảng trắng?
- 16. Đây có phải là cách hiệu quả nhất để thể hiện truy vấn XDocument này không?
- 17. Làm cách nào để truy xuất đường dẫn đến dylib của tôi khi chạy?
- 18. Cách tạo tệp mới bằng đường dẫn?
- 19. "Truy cập vào đường dẫn ... bị từ chối" (.NET C#)
- 20. Truy cập đường dẫn tương đối bằng Python
- 21. Làm cách nào để tạo một đường dẫn ngẫu nhiên?
- 22. Làm cách nào để đặt đường dẫn trong Visual Studio?
- 23. Làm cách nào để bảo toàn tất cả định dạng XML bằng XDocument?
- 24. Làm cách nào để phân tích các biến trong chuỗi truy vấn bằng Express?
- 25. Tôi làm cách nào để kiểm tra độ phân giải tuyến đường/hành động của URL bằng chuỗi truy vấn?
- 26. Làm cách nào để thêm loại tài liệu vào XDocument?
- 27. Làm cách nào để định tuyến URL bằng chuỗi truy vấn trong Symfony2?
- 28. Làm cách nào để chỉ nhận chuỗi truy vấn trong tuyến đường Rails?
- 29. Cách định tuyến chuỗi truy vấn bằng "?" và làm thế nào để xử lý nó
- 30. Làm cách nào để lấy tên tệp từ đường dẫn đầy đủ bằng PHP?
có thể trùng lặp [cách sử dụng XPath với XDocument?] (Http://stackoverflow.com/questions/6209841/how-to-use-xpath-with -xdocument) –
Bạn có thể xem ví dụ về các đường dẫn khác nhau, có/không có định nghĩa vùng tên, v.v. tại đây: http://stackoverflow.com/a/38272604/5838538. – Jelgab