1

属性値を読み取ろうとすると、「Property 'InnerText' is WriteOnly」エラーが発生します

ここに私のXMLがあります:

<?xml version="1.0" encoding="utf-8"?>
<products>
    <product ID="11837">
        <price currency="EUR">75.29</price>
        <properties>
            <property name="brand">
                <value></value>
            </property>
    </properties>
<variations/>
</product>
</products>

私が行う価格を抽出するには:

node.SelectSingleNode("price").InnerText

「75.29」を返します

しかし、私がするとき:

node.Attributes("ID").InnerText

エラーが発生します:

プロパティ 'InnerText' は WriteOnly です

書き込み専用である理由がわかりません。また、値を読み取れるように変更する方法もわかりません。

4

2 に答える 2

0

MSDNによると:

ノードとそのすべての子の連結値。属性ノードの場合、このプロパティには Value プロパティと同じ機能があります。

Value代わりに、次のようにプロパティを使用する必要があります。

node.Attributes("ID").Value

または、 にキャストしてからXmlNodeにアクセスすることもできますInnerTextXmlNodeは の基本クラスでXmlAttributeあり、そのInnerTextプロパティは書き込み専用ではなく読み書き可能です。例えば:

CType(node.Attributes("ID"), XmlNode).InnerText

XmlAttributeクラスで書き込み専用になっている理由がわかりません。おそらく、クラスの内部動作を考えると、それには何らかの正当な理由があったに違いありませんが、それが何であるかを想像するのは困難です. 奇妙なことに、バージョン 1.1 の MSDN ドキュメントでは、実際には、そのバージョンのフレームワークでは読み取り/書き込みプロパティであると述べられています。次に、バージョン 2.0 ~ 4.0 では、プロパティを書き込み専用として定義しますが、その説明には「取得または設定...」と記載されているため、MSDN はそれについて正確に一貫していません。

于 2013-05-02T13:04:20.687 に答える