阅读 XML 篇内容

Read XML content

假设我有一个 XML 比如:

<current>
  <city id="2563232" name="London">
    <coord lon="-0.13" lat="51.51">
    <country>GB</country>
    <sun rise="2017-08-17T04:23:00" set="2017-08-17T17:48:39"/>
  </city>
  <temperature value="305.15" min="305.15" max="305.15" unit="kelvin"/>
  <humidity value="25" unit="%"/>
  <pressure value="1015" unit="hPa"/>
  <wind>...</wind>
  <clouds value="0" name="clear sky"/>
  <visibility value="10000"/>
</current>

我可以在我的变量 "test" 中看到 City 和 Wind 的信息,当我想调试的时候,但我得到的是空白。我的代码是:

XmlNodeList xnlNodes = OtherClass.retrieveXMLResponse(respStream);
String test = "";

foreach (XmlNode xndNode in xnlNodes)
{
  test = xndNode["city"].InnerXml;
  test = xndNode["wind"].InnerXml;
  test = xndNode["temperature"].InnerXml;
  test = xndNode["humidity"].InnerXml;
  test = xndNode["pressure"].InnerXml;
  test = xndNode["clouds"].InnerXml;
  test = xndNode["visibility"].InnerXml;
}

我稍后会用一个对象替换 "test"。这是检索XML响应方法:

public static XmlNodeList retrieveXMLResponse(Stream stream)
{
    StreamReader reader = new StreamReader(stream, Encoding.UTF8);
    string responseString = reader.ReadToEnd();
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.LoadXml(responseString);

    XmlElement xelRoot = xmlDoc.DocumentElement;
    XmlNodeList xnlNodes = xelRoot.SelectNodes("/current");

    return xnlNodes;
}

只包含属性的节点上没有内XML,因此内XML属性为空。如果您想读取给定节点的属性值,每个 XML 节点都有一个 attributes 属性。