繁体   English   中英

在 c# 中解析天气预报数据(来自 NDFD)

[英]Parse Weather Forecast Data (from the NDFD) in c#

我正在使用 > http://www.weather.gov/forecasts/xml/DWMLgen/wsdl/ndfdXML.wsdl网络服务通过调用 GmlTimeSeries 网络方法获取天气详细信息。 现在我只想阅读 xml 中的温度、天气图标链接详细信息。 xml 拥有庞大的数据。 任何人都可以提出从 xml 获取所需数据的想法吗?

NDFD主页

XML 看起来几乎如下所示: 完整的 XML 文件在这里

我想从 xml 数据下方获取温度:

 <gml:featureMember>
          <app:Forecast_Gml2Point>
             <gml:position>
                <gml:Point srsName="EPSG:4326">
                   <gml:coordinates>-87.8859170,41.7450495</gml:coordinates>
                </gml:Point>
             </gml:position>
             <app:validTime>2011-06-07T12:00:00</app:validTime>
             <app:temperature>77.0</app:temperature>
          </app:Forecast_Gml2Point>
       </gml:featureMember>

       <gml:featureMember>
          <app:Forecast_Gml2Point>
             <gml:position>
                <gml:Point srsName="EPSG:4326">
                   <gml:coordinates>-87.8859170,41.7450495</gml:coordinates>
                </gml:Point>
             </gml:position>
             <app:validTime>2011-06-07T15:00:00</app:validTime>
             <app:temperature>90.0</app:temperature>
          </app:Forecast_Gml2Point>
       </gml:featureMember>

和下面的天气短语:

 <gml:featureMember>
      <app:Forecast_Gml2Point>
         <gml:position>
            <gml:Point srsName="EPSG:4326">
               <gml:coordinates>-87.8859170,41.7450495</gml:coordinates>
            </gml:Point>
         </gml:position>
         <app:validTime>2011-06-08T03:00:00</app:validTime>
         <app:weatherPhrase>Mostly Clear</app:weatherPhrase>
      </app:Forecast_Gml2Point>
   </gml:featureMember>

   <gml:featureMember>
      <app:Forecast_Gml2Point>
         <gml:position>
            <gml:Point srsName="EPSG:4326">
               <gml:coordinates>-87.8859170,41.7450495</gml:coordinates>
            </gml:Point>
         </gml:position>
         <app:validTime>2011-06-08T06:00:00</app:validTime>
         <app:weatherPhrase>Mostly Clear</app:weatherPhrase>
      </app:Forecast_Gml2Point>
   </gml:featureMember>

以上是一段xml文件。 像这样,我有 7 天天气详细信息的大数据。 我需要从 xml 上方读取温度和天气状况。

完整的 XML 文件在这里

我想你会在这里找到你的答案

编辑:您需要使用命名空间,例如:

XNamespace app = "http://www.weather.gov/forecasts/xml/OGC_services";
var result = from i in doc.Descendants(app+"Forecast_Gml2Point")
                  select new 
                  {
                      temperature = i.Element(app + "temperature"), 
                      icon = i.Element(app+"weatherIcon")
                  };

编辑 2:如果您需要使用其他命名空间获取 Element,这是另一个示例:

XNamespace gml ="http://www.opengis.net/gml"
i.Element(gml+"coordinates" )

如果使用 Visual Studio 的“添加 Web 参考”功能会更容易。 通过这种方式,Visual Studio 会根据 WSDL 为您生成所有(代理)类,然后您就可以像平常一样对这些类进行编程。 换句话说,不需要解析 XML。

如此链接中指出的那样:

Visual Studio.Net Web 引用是在客户端创建的代理类,用于连接到服务器上运行的 Web 服务。 在 IDE Web 内部引用会自动生成代码并将隐藏文件插入到您的项目中。 这是必需的,因为 .Net 是类型安全的,并且为了编译使用 Web 服务的代码,客户端必须知道调用的每个方法的方法签名。

您可能想详细参考上面关于使用 WSDL 的链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM