可通过多种方式修改文档中的节点和内容。 您可以:
使用 Value 属性更改节点的值。
通过将节点替换为新节点来修改整个节点集。 使用InnerXml属性来完成。
使用 RemoveChild 该方法将现有节点替换为新节点。
使用XmlCharacterData、AppendData或InsertData方法向继承自ReplaceData类的节点增加附加字符。
通过在从 DeleteData 继承的节点类型上使用 XmlCharacterData 方法删除一系列字符,来修改内容。
更改节点值的简单方法是使用 node.Value = "new value";
。 下表列出了此单行代码所针对的节点类型,以及该节点类型的确切数据发生更改。
节点类型 | 数据已更改 |
---|---|
特征 | 特性的值。 |
CDATASection | CDATA 节的内容。 |
注释 | 注释的内容。 |
ProcessingInstruction | 内容(排除目标对象)。 |
文本 | 文本的内容。 |
XML声明 | 声明的内容,不包括 <?xml 和 ?> 标记。 |
空格 | 空白区的价值。 可以将该值设置为四个识别的 XML 空白字符之一:空格、制表符、CR 或 LF。 |
SignificantWhitespace | 有效空白的值。 可以将该值设置为四个识别的 XML 空白字符之一:空格、制表符、CR 或 LF。 |
表中未列出的任何节点类型都不是设置值的有效节点类型。 设置任何其他节点类型的值都将引发 InvalidOperationException。
该 InnerXml 属性更改当前节点的子节点的标记。 设置此属性会将子节点替换为给定字符串的已分析内容。 分析是在当前命名空间上下文中完成的。 此外, InnerXml 删除冗余命名空间声明。 因此,大量剪切和粘贴作不会增加具有冗余命名空间声明的文档大小。 有关显示命名空间对 InnerXml 操作影响的代码示例,请参阅InnerXml 属性。
使用 ReplaceData 和 RemoveChild 方法时,方法将返回已替换或移除的节点。 然后,可以在 XML 文档对象模型(DOM)中的其他位置重新插入此节点。 该方法 ReplaceData 对要插入到文档中的节点上执行两次验证检查。 第一个检查确保该节点成为某个节点的子级,这个节点可具有其类型的子节点。 第二个检查确保插入的节点不是它成为其子级的节点的上级。 违犯这两个条件中的任何一个都将引发 InvalidOperationException。
向可编辑的节点中添加或从中移除只读子级是有效的。 然而,试图修改只读节点本身将引发 InvalidOperationException 异常。 修改 XmlEntityReference 节点的子级便属于这种情况。 该子级是只读的,因此无法修改。 任何修改它们的尝试都会导致抛出一个 InvalidOperationException。