使用linq读取XML文件
本文关键字:文件 XML 读取 linq 使用 | 更新日期: 2023-09-27 18:15:14
我正在尝试使用LinQ读取一个复杂的XML文件。
XML文件有很多层次,怎么能在一个ILIST<>中得到所有的值。物品中有更多的标签。在这里输入代码
XML的语法如下:
<root>
<items>
<index_0>
<product_id>19</product_id>
<menu_rank>2</menu_rank>
<menu_country>Guatemala</menu_country>
<menu_country_code>502</menu_country_code>
<menu_country_abrv>GT</menu_country_abrv>
<menu_carrier>TIGO</menu_carrier>
<menu_value>7.0</menu_value>
</index_0>
<index_1>
<product_id>20</product_id>
<menu_rank>2</menu_rank>
<menu_country>Guatemala</menu_country>
<menu_country_code>502</menu_country_code>
<menu_country_abrv>GT</menu_country_abrv>
<menu_carrier>TIGO</menu_carrier>
<menu_value>10.0</menu_value>
</index_1>
<index_2>
<product_id>21</product_id>
<menu_rank>2</menu_rank>
<menu_country>Guatemala</menu_country>
<menu_country_code>502</menu_country_code>
<menu_country_abrv>GT</menu_country_abrv>
<menu_carrier>TIGO</menu_carrier>
<menu_value>14.0</menu_value>
</index_2>
</items>
<d1>2011-09-30 13:00:00</d1>
<d2>2013-05-24 13:00:00</d2>
<num_items>4</num_items>
<total_retail>2.05</total_retail>
<total_sale>2.05</total_sale>
<total_cost>1.64</total_cost>
<total_discount_amount>0.41</total_discount_amount>
<balance>1.64</balance>
</root>
我试过这个方法:
var vrresult = from a in xmlDoc.XPathSelectElements("/root/items/*")
select new
{
when = a.Element("when").Value,
agent_name = a.Element("agent_name").Value,
ani = a.Element("ani").Value,
product_description = a.Element("product_description").Value,
sale = a.Element("sale").Value,
cost = a.Element("cost").Value
};
如何获得"total cost" &"平衡"的价值?
<total_sale>2.05</total_sale>
<total_cost>1.64</total_cost>
<total_discount_amount>0.41</total_discount_amount>
<balance>1.64</balance>
有什么建议
您可以使用以下代码,
var costNode = xmlDoc.SelectSingleNode("/root/total_cost")
和类似的,
var balanceNode = xmlDoc.SelectSingleNode("/root/balance")
可以从这两个xmlelement中轻松提取值。
因为你已经有了一个xPath
,所以我建议使用这个方法。