【问题标题】:How do I get specific nodes from a xml Url and list them in winforms如何从 xml Url 获取特定节点并在 winforms 中列出它们
【发布时间】:2017-02-04 16:43:36
【问题描述】:

我对编程很陌生,我有一个任务要使用 winforms 完成,而且我以前从未接触过 XML。

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

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

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

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

【问题讨论】:

    标签: c# xml winforms


    【解决方案1】:

    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'。如果您不知道,请参阅:

    【讨论】:

      【解决方案2】:

      在这种情况下,最好的方法是使用 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 我会发布更多内容,但如果您需要说,所有位置值都使用 SelectNodes,或者如果您想要一些非常具体的东西,只需使用 SelectSingleNode,请在 MSDN 中查找 SelectNodes 和 SelectSingleNode 以获得帮助。

      【讨论】:

      • 您好,谢谢您的回答。我只是想知道,你从哪里得到“医生”。在 XmlNode 节点 = doc.SelectSingleNode from?
      • @Sten 已修复...我的类型。我从我编写的程序中复制了一些东西,呵呵。
      • 现在它告诉我 XDocument 不包含“SelectSingleNode”的定义。我错过了什么吗?我确实写下了 using 指令..
      • @Sten 我忘了包括你让根元素成为元素的部分 LOL 对此感到抱歉。改变了,看看是否有效。
      • 没问题,感谢您的帮助!现在“SelectSingleNode”可以工作,但“DocumentElement”出现错误。 “XDocument 不包含 'DocumentElement' 等的定义。有什么想法吗?
      猜你喜欢
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 2014-04-20
      • 1970-01-01
      • 2014-01-29
      • 2014-05-04
      • 2010-11-14
      相关资源
      最近更新 更多