我在我的C#WindowsForm中使用天气api,它返回我想从中获取节点的xml文件。
<current>
<city id="2988507" name="Paris">
<coord lon="2.35" lat="48.85"/>
<country>FR</country>
<timezone>7200</timezone>
<sun rise="2020-06-13T03:46:45" set="2020-06-13T19:54:52"/>
</city>
<temperature value="67.41" min="66.2" max="69.01" unit="fahrenheit"/>
<feels_like value="64.31" unit="fahrenheit"/>
<humidity value="59" unit="%"/>
<pressure value="1009" unit="hPa"/>
</current>
如果我试图得到温度和城市的值,我没有问题,但当我试图得到国家的值,我得到零误差。
using (WebClient web = new WebClient())
{
string url = web.DownloadString("http://api.openweathermap.org/data/2.5/weather?q=" + lookedCity + "&mode=xml&units="+tempType+"&appid=70e1d7c5");
XmlDocument doc = new XmlDocument();
doc.LoadXml(url);
temp = doc.DocumentElement.SelectSingleNode("temperature").Attributes["value"].Value;
country = doc.DocumentElement.SelectSingleNode("country").Value;
city = doc.DocumentElement.SelectSingleNode("city").Attributes["name"].Value;
}
基本上,您需要使用innertext
而不是value
,并且country位于city之下。
var country = doc.DocumentElement.SelectSingleNode("city").SelectSingleNode("country").InnerText;
这适用于您的情况,但我建议您使用LINQ。