我有以下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
无法正确填充?
答案 0 :(得分:4)
.Value
是null
for Element
nodes。
您想要macnode.Attributes.GetNamedItem("VALUE").Value
答案 1 :(得分:2)
默认情况下, 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;
应该为您提供正确的价值。
答案 2 :(得分:1)
macnode.Value
是文本值,而不是VALUE
属性的值。您需要Attributes
macnode
属性,然后从中获取VALUE
属性的属性值。请参阅http://msdn.microsoft.com/en-us/library/system.xml.xmlnode.attributes.aspx和http://msdn.microsoft.com/en-us/library/system.xml.xmlattributecollection.aspx
答案 3 :(得分:1)
VALUE
是一个属性。
string value = macnode.Attributes["VALUE"].Value
答案 4 :(得分:0)
您可以通过一个XPath选择实际执行此操作:
XmlNode macnode = xmlDoc.SelectSingleNode("/NET_SETTINGS/IP_ADDRESS/@VALUE");
string mac = macnode.Value;