c# - foreach循环读取xml子节点

标签 c# xml web-services webforms

我想读取xml中的所有节点。在没有循环的情况下读取顶部节点很好,但我想读取所有节点以获得每个城市的所有不同温度。这是 xml:

<servers>
  <server name ="Stockholm">
    <!-- data from Google weather -->
    <name>Stockholm (Google)</name><!--Läser denna rad för tillfället-->
    <url>http://www.yr.no/place/sweden/stockholm/stockholm/forecast.xml</url>
    <xpath>/weatherdata/forecast/tabular/time/temperature</xpath>
  </server>
  <server name ="Göteborg">
    <name>Göteborg (Google)</name>    <url>http://www.yr.no/place/Sweden/V%C3%A4stra_G%C3%B6taland/Gothenburg/forecast.xml</url>
    <xpath>/weatherdata/forecast/tabular/time/temperature</xpath>
  </server>
  <server name =" Malmö">
    <name>Malmö (Google)</name>
    <url>http://www.yr.no/place/sweden/scania/malmö/forecast.xml</url>
    <xpath>/weatherdata/forecast/tabular/time/temperature</xpath>
  </server>
</servers>

到目前为止我的代码:

XmlDocument serverDoc = new XmlDocument();
serverDoc.Load("ServerUrls.xml");
XmlNodeList xml = 
serverDoc.SelectNodes("servers/server");
foreach (var node in xml)
{

}

我知道的不多。但似乎无法找到我可以正确使用的信息。去过 MSDN 并试图从那里找出答案,但没有结果。

感谢我能得到的所有帮助。

enter image description here

最佳答案

如评论中所述,您需要获取实际温度所在的 XML 的 URL,以及相应的 XPath 以在 XML 中定位温度。将 URL 中的 XML 加载到 XmlDocument 中,然后执行 XPath 以提取实际温度值:

foreach (XmlNode node in xml)
{
    // get information needed to extract temprature i.e XML location, and the XPath :
    var loc = node.SelectSingleNode("url").InnerText;
    var xpath = node.SelectSingleNode("xpath").InnerText;

    // get temperature information
    var doc = new XmlDocument();
    doc.Load(loc);
    var temperatures = doc.SelectNodes(xpath);

    // iterate through temperatures and take action accordingly, f.e print the temperature 
    foreach(XmlNode temperature in temperatures)
    {
        Console.WriteLine(temperature.Attributes["value"].Value);
    }
}

关于c# - foreach循环读取xml子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43384458/

相关文章:

c# - 连接到 SSL 加密网站的安全性如何?

c# - httpclient 调用 webapi 以发布数据不起作用

c# - 为应用程序提供与 Visual Studio 相同的视觉外观

java - Google App Engine Java,无法访问本地主机!

java - "org.apache.cxf.interceptor.Fault: null while invoking"异常解决方法好吗?我找不到原因。 (附上日志)

c# - ASP.NET MVC 查询的通用处理程序

python - 使用元素树和 Python 进行 XML 命名空间解析搜索

xml - 带有 XML 的 Excel 电子表格

c# - 如何覆盖 C# 中的反序列化

c# - Exchange Web 服务托管 API : Accessing other users items