0

我真的没有太多地使用 XML,我希望能得到一些帮助。

我正在尝试从 WeatherBug 读取 RSS 提要

我在这里找到了一些示例代码:

http://geekswithblogs.net/thibbard/archive/2006/01/13/65764.aspx

他们在哪里使用 System.Data.DataSet 来读取 XML 提要。

(他们使用的是 VBasic 我使用的是 VC#)

这是我正在尝试阅读的 XML 示例:

http://api.wxbug.ne​​t/getLiveCompactWeatherRSS.aspx?ACode=A5333948364&zipcode=80918&unittype=0&OutputType=1

在代码示例中,他们得到风速如下:

_wind = DS.Tables("wind-speed").Rows(0).Item("wind-speed_Text")

我怎么知道为每个索引值指定什么?我想我理解他们是如何确定指定风速的,但他们是如何确定如何指定风速文本的?

我可以使用以下方法查看调试器中的值:

m_ds.Tables["风速"].Rows[0].ItemArray

我可以看到 3 个值。“MPH”、“3”和 0。

MPH 将是单位。“3”是速度。不知道 0 是什么。

我将如何访问 aws:WebURL 的值?

而且我只看到 8 张桌子。但还有更多的价值。通过调试器,我在 Weather 表中找到了这些 URL 以及 wind-direction 和 gust-direction 的值。

我以为我已经把整张桌子的东西都钉牢了,但似乎没有押韵也没有理由。

谁能让我走上正确的道路?基本上我只需要知道如何根据我在 XML 中看到的内容找出如何在 DataTables 中查找内容。

谢谢

4

1 回答 1

1

快捷方便:

XDocument doc = XDocument.Load("http://api.wxbug.net/getLiveCompactWeatherRSS.aspx?ACode=A5333948364&zipcode=80918&unittype=0&OutputType=1");
            XNamespace ns = "http://www.aws.com/aws";
            var webUrl = doc.Element(ns + "weather").Element(ns + "WebURL").Value;
            var wind = doc.Element(ns + "weather").Element(ns + "wind-speed").Value; 

您还可以使用 LINQ:

XDocument doc = XDocument.Load("http://api.wxbug.net/getLiveCompactWeatherRSS.aspx?ACode=A5333948364&zipcode=80918&unittype=0&OutputType=1");
            XNamespace ns = "http://www.aws.com/aws";
            var v = from d in doc.Elements(ns + "weather") select new { WebUrl = d.Element(ns + "WebURL").Value, WindSpeed = d.Element(ns + "wind-speed").Value};
            foreach (var c in v)
            {
                Console.WriteLine(c.WebUrl + "--" + c.WindSpeed);
            }
于 2012-04-22T04:46:22.600 回答