如何从xml Url获取特定节点并将其列在winforms中

时间:2017-02-04 16:43:37

标签: c# xml winforms

我是编程新手,我已经完成了winforms的任务,之前从未涉及过XML。

我必须从名为Urls.xml的XML文件中获取天气数据,该文件内部有三个链接(例如:http://www.yr.no/place/sweden/stockholm/stockholm/forecast.xml)。

到目前为止,我已经设法从XML文件中的第一个链接获取温度以显示但我无法获得所有温度。

我的问题是:如何获取Urls.xml中所有三个城市的温度值并将其显示在我的winforms应用中?

如果您需要更多信息,请告诉我,因为我已经说过我对编程非常陌生,我感谢所有帮助。

2 个答案:

答案 0 :(得分:0)

在这种情况下,最好的方法是使用Linq来获得您想要的值。

将URL加载到字符串中,然后使用XmlDocument将字符串作为XML读取。

    public string xmlURL = "http://www.yr.no/place/sweden/stockholm/stockholm/forecast.xml";
    private void Form1_Load(object sender, EventArgs e) {
        string xmlStr;
        using (var wc = new WebClient()) {
            xmlStr = wc.DownloadString(xmlURL);
        }
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xmlStr);
        XmlElement root = xmlDoc.DocumentElement;
        XmlNode node = root.SelectSingleNode("XPathInfo");
   } 

了解更多信息: 一些XPath示例https://msdn.microsoft.com/en-us/library/ms256086(v=vs.110).aspx 我会发布更多,但在MSDN中查找SelectNodes和SelectSingleNode以获得帮助,如果你需要说,所有的位置值都使用SelectNodes,或者你想要一些非常具体的东西,只需使用SelectSingleNode。

答案 1 :(得分:0)

Q1,如何获取温度值。

以下代码中的变量r是您想要的。

Q2,如何在我的winforms应用中显示它们。

我担心我无法帮助你,你需要自己编码。

    string url = "http://www.yr.no/place/sweden/stockholm/stockholm/forecast.xml";
    var xml = XDocument.Load(url);
    var search = xml.XPathSelectElements("/weatherdata/forecast/tabular//time");
    var r = search.Select(p => new {
        from = p.Attribute("from").Value,
        to = p.Attribute("to").Value,
        period = p.Attribute("period").Value,
        temperature_unit = p.Element("temperature").Attribute("unit").Value,
        temperature_value = p.Element("temperature").Attribute("value").Value,
    }).ToList();

以上代码包括XDocunmet,' Linq'和' XPath'你需要知道。如果你不知道,请看这个: