我是编程新手,我已经完成了winforms的任务,之前从未涉及过XML。
我必须从名为Urls.xml的XML文件中获取天气数据,该文件内部有三个链接(例如:http://www.yr.no/place/sweden/stockholm/stockholm/forecast.xml)。
到目前为止,我已经设法从XML文件中的第一个链接获取温度以显示但我无法获得所有温度。
我的问题是:如何获取Urls.xml中所有三个城市的温度值并将其显示在我的winforms应用中?
如果您需要更多信息,请告诉我,因为我已经说过我对编程非常陌生,我感谢所有帮助。
答案 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'你需要知道。如果你不知道,请看这个: