我在尝试读取属性值时遇到“Property'InperText'是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
我没有看到任何理由为什么它是只写的,并且不知道如何更改它以便我可以读取该值。
答案 0 :(得分:1)
XmlAttribute
的实现是一个事实,它只支持写入InnerText
属性。您没有“更改它”以便您可以读取该值 - 您使用Value
属性:
获取或设置节点的值。
或者,如果您将InnerText
转换为XmlAttribute
(其基类),则可以通过XmlNode
访问该值。
答案 1 :(得分:0)
根据MSDN:
节点及其所有子节点的连接值。对于属性节点,此属性与Value属性具有相同的功能。
您应该使用Value
属性,而不是像这样:
node.Attributes("ID").Value
或者您可以将其投放到XmlNode
,然后访问InnerText
。 XmlNode
是XmlAttribute
的基类,其InnerText
属性是读写而不是只写。例如:
CType(node.Attributes("ID"), XmlNode).InnerText
我不确定为什么它只能写在XmlAttribute
类中。考虑到班级的内部运作,大概肯定有一些很好的理由,尽管很难想象会是什么。奇怪的是,在1.1版的MSDN文档中实际上说它是该版本框架中的读/写属性。然后,在版本2.0 - 4.0中,它将属性定义为只写,但它的描述显示为“获取或设置...”因此,MSDN并没有完全一致。