Изменение узлов, содержимого и значений в XML-документеModifying Nodes, Content, and Values in an XML Document

Существует множество способов изменения узлов и содержимого в документе.There are many ways you can modify the nodes and content in a document. Вы можете выполнить следующие действия.You can:

  • изменять значение узлов с помощью свойства Value;Change the value of nodes using the Value property.

  • изменять набор узлов в целом, заменяя узлы новыми.Modify an entire set of nodes by replacing the nodes with new nodes. Это делается с помощью свойства InnerXml;This is done using the InnerXml property.

  • заменять существующие узлы новыми с помощью метода RemoveChild;Replace existing nodes with new nodes using the RemoveChild method.

  • добавлять в узлы дополнительные символы, наследующие от класса XmlCharacterData, используя методы AppendData, InsertData или ReplaceData;Add additional characters to nodes that inherit from the XmlCharacterData class using the AppendData, InsertData, or ReplaceData methods.

  • изменять содержимое путем удаления диапазона символов с помощью метода DeleteData для типов узлов, наследующих от XmlCharacterData.Modify the content by removing a range of characters using the DeleteData method on node types that inherit from XmlCharacterData.

Изменить значение узла можно с помощью простого приема node.Value = "new value";.A simple technique for changing the value of a node is to use node.Value = "new value";. В следующей таблице перечислены типы узлов, в которых работает эта строка кода, и указано, какие данные изменяются для этого типа узла.The following table lists the node types that this single line of code works on and exactly what data for that node type is changed.

Тип узлаNode type Изменяемые данныеData changed
АтрибутAttribute Значение атрибута.The value of the attribute.
CDATASection.CDATASection Содержимое CDATASection.The content of the CDATASection.
КомментарийComment Содержимое комментария.The content of the comment.
ProcessingInstruction;ProcessingInstruction Содержимое, за исключением цели.The content, excluding the target.
ТекстText Содержимое текста.The content of the text.
XmlDeclarationXmlDeclaration Содержимое декларации, за исключением разметки <?xml и ?>.The content of the declaration, excluding the <?xml and ?> markup.
WhitespaceWhitespace Значение символа пробела.The value of the white space. В качестве значения можно задать один из четырех различаемых в XML пробельных символов: пробел, табуляция, CR или LF.You can set the value to be one of the four recognized XML white space characters: space, tab, CR, or LF.
SignificantWhitespaceSignificantWhitespace Значение значащих пробелов.The value of the significant white space. В качестве значения можно задать один из четырех различаемых в XML пробельных символов: пробел, табуляция, CR или LF.You can set the value to be one of the four recognized XML white space characters: space, tab, CR, or LF.

Типы узлов, не представленные в таблице, являются недопустимыми для установки значений.Any node type not listed in the table is not a valid node type to set a value on. При установке значения в узле такого типа вызывается исключение InvalidOperationException.Setting a value on any other node type throws an InvalidOperationException.

Свойство InnerXml изменяет разметку дочерних узлов текущего узла.The InnerXml property changes the markup of the child nodes for the current node. Задание этого свойства замещает дочерние узлы значением заданной строки, содержимое которой прошло синтаксический анализ.Setting this property replaces the child nodes with the parsed contents of the given string. Синтаксический анализ выполняется в контексте текущего пространства имен.The parsing is done in the current namespace context. Кроме того, свойство InnerXml удаляет избыточные декларации пространств имен.In addition, InnerXml removes redundant namespace declarations. В результате после многочисленных операций вырезания и вставки размер документа не будет увеличиваться за счет избыточных деклараций пространств имен.As a result, numerous cut and paste operations do not increase the size of your document with redundant namespace declarations. Пример кода, демонстрирующий влияние пространств имен на работу InnerXml, см. в свойстве InnerXml.For a code example showing the effect of namespaces on the InnerXml operation, see the InnerXml property.

Использование методов ReplaceData и RemoveChild возвращает замещенный или удаленный узел.When using the ReplaceData and RemoveChild methods, the methods return the replaced or removed node. Затем этот узел можно повторно вставить в другом месте модели XML DOM.This node can then be reinserted somewhere else in the XML Document Object Model (DOM). Метод ReplaceData выполняет двойную проверку узла, вставляемого в документ.The ReplaceData method does two validation checks on the node being inserted into the document. Первая проверка обеспечивает то, что узел становится дочерним для узла, который может иметь дочерние узлы такого типа.The first check ensures that the node is becoming a child of a node that can have child nodes of its type. Вторая проверка обеспечивает то, что вставляемый узел не является предком узла, для которого он становится дочерним.The second check ensures that the node being inserted is not an ancestor of the node it is becoming a child of. Несоблюдение любого из этих условий вызывает исключение InvalidOperationException.Violating either of these conditions throws an InvalidOperationException.

Допустимо добавлять дочерний узел, доступный только для чтения, в узел, поддерживающий изменение, или удалять из него.It is valid to add or remove a read-only child from a node that can be edited. Однако при попытке изменить сам узел, доступный только для чтения, вызывается исключение InvalidOperationException.However, attempts to modify the read-only node itself throws an InvalidOperationException. Примером может служить изменение потомков узла XmlEntityReference.An example of this is modifying the children of an XmlEntityReference node. Потомки доступны только для чтения, и их нельзя изменить.The children are read-only and cannot be modified. Любая попытка изменить вызывает исключение InvalidOperationException.Any attempt to modify them throws an InvalidOperationException.

См. также:See also