[英]Parse complicated XML with c# Xml to linq
我是解析XML文档的新手。 我要解析以下XML文档: http : //www.petrol.eu/api/fuel_prices.xml
并获得价格
目前,我正在使用以下代码:
XDocument xDoc = XDocument.Load("http://www.petrol.eu/api/fuel_prices.xml");
var list = xDoc.Descendants("country").Where(t => t.Attribute("label").Value=="Slovenia").ToList();
foreach (var country in list)
{
var s95 = country.Elements("pricetype").First(p => p.Attribute("type").Value == "price").Value;
txtBVnosi.Text = s95;
}
我知道代码是错误的。我现在有点迷茫,因为我不知道如何正确地获取价格,因为它是一个非常复杂的结构化XML,而我发现的所有其他问题都是关于更简单的XML文件的。
您首先需要调查fuel
元素以获取价格。
为了获得每种燃料的所有价格,我建议使用Dictionary
:
Dictionary<string, string> prices = new Dictionary<string, string>();
foreach (var fuel in country.Elements("fuel"))
{
prices.Add(
fuel.Attribute("type").Value,
fuel.Element("priceType").Elements().First(p => p.Attribute("type").Value == "price").Value);
}
之后,您可以轻松获得特定价格:
var s95 = prices["95"];
但是由于我猜(基于代码中变量的名称),您想获取95号燃料的价格,因此该查询也可以工作:
var s95 = country.Elements("fuel")
.First(f => f.Attribute("type").Value == "95")
.Element("priceType")
.Elements()
.First(p => p.Attribute("type").Value == "price").Value;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.