提问者:小点点

获取xml中子节点的值


我在我的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;
}

共1个答案

匿名用户

基本上,您需要使用innertext而不是value,并且country位于city之下。

var country = doc.DocumentElement.SelectSingleNode("city").SelectSingleNode("country").InnerText;

这适用于您的情况,但我建议您使用LINQ。