C# 修改节点的值
在了解如何改变节点值之前,先要明白,节点值一般比较复杂。实际上,即使派生于XmlNode的所有类都包含Value属性,它也很少返回有用的信息。初看起来它可能令人失望,但实际上是十分合理的。分析一下前面的books示例:
<books>
<book>
<title>Beginning Visual C# 2017</title>
<author>Benjamin Perkins et al</author>
<code>458685</code>
</book>
<book>
</books>
文档中的每对标记都解析为DOM中的一个节点。在迭代文档中的所有节点时,会遇到许多XmlElement节点和三个 XmlText 节点。上述 XML 中的 XmlElement 节点是<books>、<book>、<titl>、<author>和<code>。 XmlText节点是title、author和code开始标记和结束标记之间的文本。也可以说title、author和code的值是标记之间的文本,但文本本身就是一个节点,是这个节点实际包含了值。其他标记都没有相关的值。
在上述FormatText方法的代码靠近顶部的位置,if块中的下述代码在当前节点是XmlText时执行:
text += node.Value;
XmlText节点实例的Value属性用于获取节点的值。
如果使用XmlElement类型的节点的Value属性,就返回null,但如果使用另两个方法InnerText和InnerXml中的一个,就可以获取XmlElement开始标记和结束标记之间的信息。也就是说,可以使用两个方法和一个属性来操作节点的值,如表所示。
属 性 | 说明 |
InnerText | 这个属性获取当前节点中所有子节点的文本,把它作为一个串联字符串返回。也就是说,在上面的XML 中,如果获取 book 节点的 InnerText 值,就返回字符串 Beginning Visual C# 2017#Benjamin Perkins eta 丨458685» 如果获取title节点的InnerText,就只返回"Beginning Visual C# 2017"。可以使用这个方法设盟文本,但要小 心,因为如果设M了错误节点的文本,就很可能会改写不想改变的信息 |
InnerXml属性返回类似于InnerText的文本,但它也返回所有标记。因此,如果获取book节点上的InnerXml 值,结果是如下字符串: | |
InnerXml | <title>Beginning Visual C# 2017</title><author>Benjamin Perkins et al </authorxcode>458685</code> |
可以看出,如果字符串包含要直接插入XML文档的内容,这是很有用的。但是要对该字符串负全贵,如果 插入格式错误的XML,应用程序就会产生异常 | |
Value | Value厲性是操作文档中信息的最精练方式,但如前所述,在获取值时,只有几个类会返回有用的信息。返 回所需文本的类如下所示: XmlText XmlComment XmlAttribute |
点击加载更多评论>>