Tôi có tệp xml trả về tập hợp các phần tử duy nhất theo giá trị thuộc tính. Điều này trình bày một vấn đề, vì tôi không thể chọn một nút theo tên của nó:LINQ to XML chọn căn cứ nút trên giá trị thuộc tính
<doc>
<float name="score">1.2873721</float>
<arr name="2_category">
<long>3021</long>
</arr>
<arr name="ATR_FamilyName">
<str>Some Cookbook </str>
</arr>
<arr name="ATR_IsFamily">
<str>0</str>
</arr>
<arr name="ATR_SellPrice">
<str>49.95</str>
</arr>
<arr name="ATR_VendorId">
<str>ABC</str>
</arr>
<arr name="ATR_VendorName">
<str>WROX</str>
</arr>
</doc>
Tôi đang sử dụng LINQ để điền vào một lớp "Sản phẩm". Tôi có thể chọn các yếu tố theo vị trí, tuy nhiên điều này sẽ trở thành một vấn đề nếu nút không tồn tại. Có cách nào để chọn một nút dựa trên giá trị của thuộc tính của nó không? Trong ví dụ dưới đây, tôi có thể lấy nút arr nếu thuộc tính @name = "ATR_FamilyName" không? Trong xpath nó sẽ là:
doc/arr[@name = 'ATR_FamilyName']/str
đây là LINQ của tôi để truy vấn xml:
var query = from rt in results
where (String)rt.Descendants().ElementAt(5).Element("str").Value == "0"
select new Product.Product
{
FamilyName = (String)rt.Descendants().ElementAt(3).Value
// doc/arr[@name = 'ATR_FamilyName']/str - select Family Name is arr/@name 'ATR_FamilyName'
MorePropertiestoset....
};
Cảm ơn Jon - Bạn đóng đinh. Tôi thích câu trả lời nhanh từ mọi người – PhillyNJ
Thx cho lời giải thích về việc đúc, Jon. Tôi đã chạy vào các tình huống mà không phải tất cả các nút có thuộc tính và nó đã ném một ngoại lệ vì tôi đã sử dụng .Giá trị thay vì dàn diễn viên; này fidex nó. –