2017-08-17 204 views
0

假设我有一个XML这样的:读取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”调试时一样,我想,但我得到了休息空白。我的代码是:

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; 
} 

我将在稍后用对象替换“测试”。这是retrieveXMLResponse方法:

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; 
} 
+2

另一个标签是自动关闭的。所以他们里面没有什么“内部”。通过调用'InnerXML',你期望什么? – litelite

回答

3

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

+0

不能相信我没有看到!谢谢,getAttribute所有我需要的。 – Dragonfly