Xem xét XML sau:Làm thế nào để sử dụng XPath với XElement hoặc LINQ?
<response>
<status_code>200</status_code>
<status_txt>OK</status_txt>
<data>
<url>http://bit.ly/b47LVi</url>
<hash>b47LVi</hash>
<global_hash>9EJa3m</global_hash>
<long_url>http://www.tumblr.com/docs/en/api#api_write</long_url>
<new_hash>0</new_hash>
</data>
</response>
Tôi đang tìm kiếm một cách thực sự ngắn để có được chỉ là giá trị của phần tử <hash>
. Tôi đã thử:
var hash = xml.Element("hash").Value;
Nhưng điều đó không hiệu quả. Có thể cung cấp truy vấn XPath cho một số XElement
không? Tôi có thể làm điều đó với khuôn khổ cũ System.Xml
, làm một cái gì đó như:
xml.Node("/response/data/hash").Value
Có một cái gì đó như thế này trong một không gian tên LINQ?
UPDATE:
Sau monkeying xung quanh với điều này một số chi tiết tôi tìm thấy một cách để làm những gì tôi đang cố gắng để làm:
var hash = xml.Descendants("hash").FirstOrDefault().Value;
tôi vẫn muốn được quan tâm để xem bất cứ ai có một giải pháp tốt hơn?
Không sử dụng FirstOfDefault() trong trường hợp này, bởi vì nếu "băm" không được tìm thấy, bạn sẽ nhận được một NullReferenceException. Sử dụng First() thay vào đó, bạn sẽ nhận được một ngoại lệ mô tả hơn. – kaalus
Sử dụng First() nếu bạn mong đợi "băm" luôn tồn tại. Nếu không, FirstOrDefault() là tốt miễn là bạn kiểm tra null trước khi truy cập thuộc tính Value. –