我有一个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吧。 –