C#使用LINQ到XML读取XML值
我创建了一个函数,该函数读取第三方XML文档以获取任何给定日期的欧元到英镑的转换率,但是我的linq查询返回的是空值 XML: 请有人帮我找出我在这里遗漏了什么C#使用LINQ到XML读取XML值,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,我创建了一个函数,该函数读取第三方XML文档以获取任何给定日期的欧元到英镑的转换率,但是我的linq查询返回的是空值 XML: 请有人帮我找出我在这里遗漏了什么 干杯。您必须考虑XML名称空间: XNamespace ns = "http://somecurrencysite.com"; var rate = XDocument.Load(xRdr) .Descendants(ns + "to") .Descendants(ns + "rate") .Descendan
干杯。您必须考虑XML名称空间:
XNamespace ns = "http://somecurrencysite.com";
var rate = XDocument.Load(xRdr)
.Descendants(ns + "to")
.Descendants(ns + "rate")
.Descendants(ns + "dayrate")
.Select(dr => Convert.ToDecimal(dr.Value))
.FirstOrDefault()
;
非常感谢,感谢您的快速响应,如此简单的更改。在此之前,我使用的是GetElementsByTagName(“dayrate”)[0]。InnerText虽然工作正常,但我正在寻找一个更“优雅”的解决方案。干杯
var uri = "http://somecurrencysite.com?date=" + date.ToString("yyyy-MM-dd") + "&to=GBP";
decimal rate;
using (var client = new WebClient())
{
client.Credentials = new NetworkCredential("userName", "passWord");
try
{
var source = new MemoryStream(client.DownloadData(uri));
var xRdr = new XmlTextReader(source);
rate = XDocument.Load(xRdr)
.Descendants("rate")
.Select(e => (decimal)e.Element("dayrate"))
.FirstOrDefault();
}
catch (Exception ex)
{
Err.ErrMsg(ex);
throw;
}
}
return rate;
XNamespace ns = "http://somecurrencysite.com";
var rate = XDocument.Load(xRdr)
.Descendants(ns + "to")
.Descendants(ns + "rate")
.Descendants(ns + "dayrate")
.Select(dr => Convert.ToDecimal(dr.Value))
.FirstOrDefault()
;