У меня есть 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 для заполнения класса "Product". Я могу выбрать элементы по позиции, однако это становится проблемой, если узел не существует. Есть ли способ выбрать узел на основе значения его атрибута? В приведенном ниже примере можно ли получить узел arr, если атрибут @name = "ATR_FamilyName"? В 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....
};