C# Pull XML data from google's weather API

后端 未结 3 609
没有蜡笔的小新
没有蜡笔的小新 2021-01-24 06:36

I\'ve been using this code to try and get data from the google weather API, but I never get even close to pulling out what i want.

My goal is to look at:



        
相关标签:
3条回答
  • 2021-01-24 07:04
    using System.Xml.Linq;
    using System.Xml.XPath;
    
    XElement doc = XElement.Load("http://www.google.com/ig/api?weather=london+uk");
    string theCity = doc.XPathSelectElement(@"weather/forecast_information/city").Attribute("data").Value;
    string theTemp = doc.XPathSelectElement(@"weather/current_conditions/temp_c").Attribute("data").Value;
    string theHumid = doc.XPathSelectElement(@"weather/current_conditions/humidity").Attribute("data").Value;
    string theWind = doc.XPathSelectElement(@"weather/current_conditions/wind_condition").Attribute("data").Value;
    
    string resultString = String.Format("City : {0} Temp : {1}c {2} {3}", theCity, theTemp, theHumid, theWind);
    
    0 讨论(0)
  • 2021-01-24 07:27

    Change that to

    history.AppendText(Environment.NewLine + "City : " + node.GetAttribute("data"));
    
    0 讨论(0)
  • 2021-01-24 07:29

    Maybe you should use node.SelectSingleNode("city").Attributes["data"].Value instead of node.InnerText

    --EDIT-- This works for me

    XmlDocument doc = new XmlDocument();
    doc.Load("http://www.google.com/ig/api?weather=london+uk");
    var list = doc.GetElementsByTagName("forecast_information");
    foreach (XmlNode node in list)
    {
        Console.WriteLine("City : " + node.SelectSingleNode("city").Attributes["data"].Value);
    }
    
    list = doc.GetElementsByTagName("current_conditions");
    foreach (XmlNode node in list)
    {
        foreach (XmlNode childnode in node.ChildNodes)
        {
            Console.Write(childnode.Attributes["data"].Value + " ");
        }
    }
    
    0 讨论(0)
提交回复
热议问题