0

次の XML があります。

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

VALUE次のように、いずれかの mac/ip 要素の文字列を取得しようとしています。

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正しく入力されないのはなぜですか?

4

5 に答える 5

4

.ValueノードnullElementです。

あなたがしたいmacnode.Attributes.GetNamedItem("VALUE").Value

于 2013-01-06T13:38:46.973 に答える
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;

正しい値が得られるはずです。

于 2013-01-06T13:46:56.980 に答える
2

VALUE属性です。

string value = macnode.Attributes["VALUE"].Value
于 2013-01-06T13:40:19.027 に答える
1

macnode.Value属性の値ではなく、テキスト値VALUEです。Attributesのプロパティが必要でmacnode、そこから属性の属性値を取得しますVALUEhttp://msdn.microsoft.com/en-us/library/system.xml.xmlnode.attributes.aspxおよびhttp://msdn.microsoft.com/en-us/library/system.xml.xmlattributecollection.aspxを参照してください。

于 2013-01-06T13:38:21.513 に答える
0

実際には、これをすべて 1 つの XPath 選択で行うことができます。

XmlNode macnode = xmlDoc.SelectSingleNode("/NET_SETTINGS/IP_ADDRESS/@VALUE");
string mac = macnode.Value;
于 2013-01-06T21:36:30.840 に答える