2017-08-17 192 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