C# XML文档替换

C# XML文档替换,c#,xml,.net-micro-framework,C#,Xml,.net Micro Framework,有人知道在.NET micro framework中处理XML文档的另一种方法吗?显然,我无法创建XmlDocument对象,因此我需要找到合适的替代对象。此外,我也不能创建XmlNode对象 我想做的是,当按下按钮时,从互联网上的rss天气提要(XML)中获取信息 //Grab wather data and display useful information. System.Xml.XmlTextReader WeatherXML = new System.Xml.XmlTextReade

有人知道在.NET micro framework中处理XML文档的另一种方法吗?显然,我无法创建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&nbsp;&deg;C   , Humidity  72% , Wind  W 18km/h</description>
        </item>`
`
天气网络-医疗帽,阿尔伯塔省
http://www.theweathernetwork.com/weather/caab0211?
气象网-。。。
版权材料
美国英语
...
...
当前天气
http://www.theweathernetwork.com/weather/caab0211?ref=current_obs
http://www.theweathernetwork.com/weather/caab0211?ref=current_obs
2015年1月20日星期二11:45:00-0500
阴天-1度;C,湿度72%,风速18km/h
`

我需要最后的描述(阴天,-1°C,湿度72%,风速18km/h)

您应该能够从
XmlTextReader
对象获取数据,但您需要跟踪文档中的位置

看起来您正在查找第一个
channel/item/description
元素。当您通过读卡器
读取
时,应该能够使用
堆栈
跟踪您的位置


大致来说,只要当前的
NodeType
XmlNodeType.Element
,就将
LocalName
推到堆栈上,只要是
EndElement
就弹出。当它是一个元素时,检查
stack.ToArray()
是否匹配
{“description”、“item”、“channel”}
。如果是,则您已经找到了要查找的节点,因此请使用读取器的
属性。

要展开我的评论,请查看的定义。如果要获取第一个描述元素的值,可以使用以下代码(原样)轻松获取该值:


由于内存限制,我认为您无法将整个XML文档加载到.NETMicro的内存中。它们确实提供了可以用来解析文档的XmlReader类,但是:不幸的是,如果您通过URL查看rss提要,您会发现我并不是在寻找文档中的第一个描述元素。。必须是第一个频道/项目元素的子元素编辑我的问题以使其更容易理解。xml文件中有多个描述元素,但我不是在寻找文档中的第一个元素。请看我的编辑,这只是一个示例。您也可以轻松地循环读取检查每个元素。不幸的是,无法调用堆栈,但我发现了以下内容:
WeatherXML.read();while(WeatherXML.Read()){if(WeatherXML.Name==“title”&&WeatherXML.ReadString()=“Current Weather”){rightstring=true;}else if(WeatherXML.Name==“description”&&rightstring==true){currCond=WeatherXML.ReadString();rightstring=false;}否则rightstring=false;}
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());
    }
}