我有一個xml文件,它返回一組由屬性值唯一的元素。這就提出了一個問題,因爲我不能選擇其名稱的節點:Linq to XML根據屬性值選擇節點
<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>
我使用LINQ to填充一個「產品」類。我可以按位置選擇元素,但如果節點不存在,則會成爲問題。有沒有辦法根據它的屬性值來選擇一個節點?在下面的例子中,如果@name屬性=「ATR_FamilyName」,我可以得到arr節點嗎?在XPath這將是:
doc/arr[@name = 'ATR_FamilyName']/str
,這裏是我的LINQ to 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....
};
謝謝喬恩打字 - 你釘。我適合每個人的快速回復 – PhillyNJ
Thx對於演員Jon的解釋。我遇到了並非所有節點都具有該屬性的情況,它正在拋出異常,因爲我使用了.Value而不是cast;這個fidex吧。 –