[英]XML selecting nodes values
我有以下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
始終為null,而OuterXml
是這樣的:
"<MAC_ADDRESS VALUE=\"bb:cc:dd:ee:ff:aa\" />"
為什么無法正確填充Value
?
.Value
Element
null
是null
。
您需要macnode.Attributes.GetNamedItem("VALUE").Value
默認情況下, Value屬性將返回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;
應該給您正確的價值。
macnode.Value
是文本值,而不是VALUE
屬性的VALUE
。 您需要macnode
的Attributes
屬性,然后從中獲取VALUE
屬性的屬性值。 請參閱http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.attributes.aspx和http://msdn.microsoft.com/en-us/library/system.xml.xmlattributecollection.aspx
VALUE
是一個屬性。
string value = macnode.Attributes["VALUE"].Value
實際上,您可以通過選擇一個XPath來完成全部操作:
XmlNode macnode = xmlDoc.SelectSingleNode("/NET_SETTINGS/IP_ADDRESS/@VALUE");
string mac = macnode.Value;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.