2013-01-06 172 views
0

我有以下XML:XML選擇節點值

<NET_SETTINGS> 
    <MAC_ADDRESS VALUE="bb:cc:dd:ee:ff:aa"/> 
    <IP_ADDRESS VALUE="10.1.1.1"/> 
</NET_SETTINGS> 

,並試圖獲取字符串MAC/IP元素喜歡的方式這樣的VALUE

XmlNode macnode = xmlDoc.SelectSingleNode("/NET_SETTINGS/IP_ADDRESS"); 
string mac = macnode.Value; 

我可以看到,它選擇正確的節點,而通過代碼,但macnode.Value始終爲空和OuterXml是這樣的:

"<MAC_ADDRESS VALUE=\"bb:cc:dd:ee:ff:aa\" />" 

爲什麼Value未正確填充?

回答

4

.Valuenull for Element nodes

你想macnode.Attributes.GetNamedItem("VALUE").Value

+0

是,就是這樣。使用了錯誤的語法。謝謝。 –

+0

sd_dracula你可以做@Esailija一個忙,並點擊勾號?複選標記顯示這是正確的答案,並標記你的帖子回答。 – Colselaw

1

VALUE是一個屬性。

string value = macnode.Attributes["VALUE"].Value 
2

默認情況下,價值屬性將返回內不在這種情況下存在的XML元素。 。 。

<MAC_ADDRESS VALUE="bb:cc:dd:ee:ff:aa"/> 

is equivalent to . . . 

<MAC_ADDRESS VALUE="bb:cc:dd:ee:ff:aa"></MAC_ADDRESS> 

OuterXML將返回整個元素標記。所以這就是爲什麼你回到了整個元素。

既然你保存它,你必須把它稱作一個屬性

XmlNode macnode = xmlDoc.SelectSingleNode("/NET_SETTINGS/IP_ADDRESS"); 
string mac = macnode.Attributes.GetNamedItem("VALUE").Value; 

應該讓你的正確值的屬性。

0

實際上,你可以做到這一切有一個XPath的選擇:

XmlNode macnode = xmlDoc.SelectSingleNode("/NET_SETTINGS/IP_ADDRESS/@VALUE"); 
string mac = macnode.Value;