有人知道在XMLDocument微框架中执行.NET的另一种方法吗?显然,我无法创建一个XmlDocument对象,因此我需要找到一个合适的替代品。此外,我也不能创建一个XmlNode对象。
我想要做的是在按下按钮时,从互联网上从rss天气提要(XML)获取信息。
//Grab wather data and display useful information.
System.Xml.XmlTextReader WeatherXML = new System.Xml.XmlTextReader(http://rss.theweathernetwork.com/weather/caab0211);
System.Xml.XmlDocument doc = new XmlDocument();
doc.Load(http://rss.theweathernetwork.com/weather/caab0211);
XmlNode node = doc.DocumentElement.SelectSingleNode("/rss/channel/item");
string attr = (node.LastChild.InnerText);XML文档:
`<rss version="2.0">
<channel>
<title>The Weather Network - Medicine Hat, Alberta</title>
<link>http://www.theweathernetwork.com/weather/caab0211?</link>
<description>The Weather Network - ...</description>
<copyright>copyright stuff</copyright>
<language>en-us</language>
<image>...</image>
<image>...</image>
<item>
<title>Current Weather</title>
<guid>http://www.theweathernetwork.com/weather/caab0211?ref=current_obs</guid>
<link>http://www.theweathernetwork.com/weather/caab0211?ref=current_obs</link>
<pubDate>Tue, 20 Jan 2015 11:45:00 -0500</pubDate>
<description>Overcast, -1 °C , Humidity 72% , Wind W 18km/h</description>
</item>`我需要最后的描述(阴天,摄氏-1度,湿度72%,风力18公里/小时)
发布于 2015-01-20 21:36:02
您应该能够从您的XmlTextReader对象中获取数据,但是您需要跟踪您在文档中的位置。
看起来您正在寻找第一个channel/item/description元素。您应该能够使用Stack跟踪您的位置,因为您的Read通过阅读器。
粗略地介绍一下,每当当前的LocalName是XmlNodeType.Element时,就将它推到堆栈上,而当它是EndElement时,就会弹出。当它是一个元素时,检查stack.ToArray()是否与{"description", "item", "channel"}匹配。如果是的话,您已经找到了要查找的节点,因此请使用读取器的Value属性。
发布于 2015-01-20 21:52:44
为了扩展我的评论,请看一下XmlReader的定义。如果您想获得第一个description元素的值,可以使用以下代码(如下所示)轻松获得它:
private static void Main(string[] args)
{
using (var xmlReader = XmlReader.Create("http://rss.theweathernetwork.com/weather/caab0211"))
{
xmlReader.ReadToFollowing("item");
xmlReader.ReadToFollowing("description");
Console.WriteLine(xmlReader.ReadElementString());
}
}https://stackoverflow.com/questions/28054668
复制相似问题