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

1

实现的事实是XmlAttribute它只支持写入其InnerText属性。您不要“更改它”以便您可以读取该值 - 您使用该Value属性:

获取或设置节点的值。

或者,您可以通过InnerText将 转换XmlAttributeXmlNode(其基类)来访问该值。

于 2013-05-02T13:06:23.263 回答
0

根据MSDN

节点及其所有子节点的串联值。对于属性节点,此属性与 Value 属性具有相同的功能。

相反,您应该只使用该Value属性,如下所示:

node.Attributes("ID").Value

或者您可以将其转换为 anXmlNode然后访问InnerText. XmlNode是 的基类XmlAttribute,它的InnerText属性是读写而不是只写。例如:

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

我不确定为什么它在XmlAttribute课堂上是只写的。考虑到班级的内部运作,大概有一些很好的理由,尽管很难想象那会是什么。奇怪的是,在 1.1 版的 MSDN 文档中实际上说它是该版本框架中的读/写属性。然后,在 2.0 - 4.0 版本中,它将属性定义为只写,但它的描述说“获取或设置......”因此,MSDN 并没有完全一致。

于 2013-05-02T13:04:20.687 回答