任何人都知道在.NET微框架中执行XMLDocument的另一种方式吗?显然,我无法创建一个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°C,湿度72%,风速18公里/小时)
答案 0 :(得分:0)
您应该能够从XmlTextReader
对象获取数据,但是您需要跟踪文档中的位置。
看起来你正在寻找第一个channel/item/description
元素。您应该可以使用Stack
来Read
通过阅读器跟踪您的位置。
作为粗略轮廓,只要当前LocalName
为NodeType
,就将XmlNodeType.Element
推入堆栈,并在EndElement
时弹出。stack.ToArray()
。如果是元素,请检查{"description", "item", "channel"}
是否与Value
匹配。如果是,您找到了您正在寻找的节点,那么请使用阅读器的{{1}}属性。
答案 1 :(得分:0)
要扩展我的评论,请查看XmlReader的定义。如果您想获得第一个描述元素的值,可以使用以下代码轻松获取它(原样):
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());
}
}