簡體   English   中英

XML選擇節點值

[英]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 nullnull

您需要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 您需要macnodeAttributes屬性,然后從中獲取VALUE屬性的屬性值。 請參閱http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.attributes.aspxhttp://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM