Ändern von Knoten, Inhalten und Werten in einem XML-DokumentModifying Nodes, Content, and Values in an XML Document

Es gibt viele Möglichkeiten, die Knoten und den Inhalt eines Dokuments zu ändern.There are many ways you can modify the nodes and content in a document. Sie haben folgende Möglichkeiten:You can:

  • Den Wert von Knoten mithilfe der Value-Eigenschaft ändern.Change the value of nodes using the Value property.

  • Eine ganze Gruppe von Knoten durch Ersetzen der Knoten mit neuen Knoten ändern.Modify an entire set of nodes by replacing the nodes with new nodes. Dies geschieht mithilfe der InnerXml-Eigenschaft.This is done using the InnerXml property.

  • Vorhandene Knoten mithilfe der RemoveChild-Methode durch neue Knoten ersetzen.Replace existing nodes with new nodes using the RemoveChild method.

  • Den Knoten, die von der XmlCharacterData-Klasse erben, mithilfe einer der Methoden AppendData, InsertData oder ReplaceData zusätzliche Zeichen hinzufügen.Add additional characters to nodes that inherit from the XmlCharacterData class using the AppendData, InsertData, or ReplaceData methods.

  • Inhalt ändern, indem ein Bereich von Zeichen mithilfe der DeleteData-Methode von Knotentypen entfernt wird, die von XmlCharacterData erben.Modify the content by removing a range of characters using the DeleteData method on node types that inherit from XmlCharacterData.

Eine einfache Möglichkeit zum Ändern des Werts eines Knotens bietet node.Value = "new value";.A simple technique for changing the value of a node is to use node.Value = "new value";. In der folgenden Tabelle ist aufgelistet, für welche Knotentypen diese einzelne Codezeile funktioniert und welche Daten des Knotentyps geändert wurden.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.

KnotentypNode type Geänderte DatenData changed
AttributAttribute Der Wert des Attributs.The value of the attribute.
CDATASectionCDATASection Der Inhalt von CDATASection.The content of the CDATASection.
KommentarComment Der Inhalt des Kommentars.The content of the comment.
ProcessingInstructionProcessingInstruction Der Inhalt mit Ausnahme des Ziels.The content, excluding the target.
TextText Der Inhalt des Texts.The content of the text.
XmlDeclarationXmlDeclaration Der Inhalt der Deklaration, ausgenommen das <?xml-Markup und das ?>-Markup.The content of the declaration, excluding the <?xml and ?> markup.
WhitespaceWhitespace Der Wert des Leerraums.The value of the white space. Sie können festlegen, dass der Wert einer der vier erkannten XML-Leerraumzeichen ist: Leerzeichen, Tabulator, Wagenrücklauf oder Zeilenvorschub.You can set the value to be one of the four recognized XML white space characters: space, tab, CR, or LF.
SignificantWhitespaceSignificantWhitespace Der Wert des signifikanten Leerraums.The value of the significant white space. Sie können festlegen, dass der Wert einer der vier erkannten XML-Leerraumzeichen ist: Leerzeichen, Tabulator, Wagenrücklauf oder Zeilenvorschub.You can set the value to be one of the four recognized XML white space characters: space, tab, CR, or LF.

Alle nicht in der Tabelle aufgelisteten Knotentypen sind keine gültigen Knotentypen, für die ein Wert festgelegt werden kann.Any node type not listed in the table is not a valid node type to set a value on. Durch Festlegen eines Werts für einen anderen Knotentyp wird eine InvalidOperationException ausgelöst.Setting a value on any other node type throws an InvalidOperationException.

Die InnerXml-Eigenschaft ändert das Markup der untergeordneten Knoten des aktuellen Knotens.The InnerXml property changes the markup of the child nodes for the current node. Durch Festlegen dieser Eigenschaft werden die untergeordneten Knoten durch analysierten Inhalt der angegebenen Zeichenfolge ersetzt.Setting this property replaces the child nodes with the parsed contents of the given string. Die Analyse wird im Kontext des aktuellen Namespaces durchgeführt.The parsing is done in the current namespace context. Zusätzlich entfernt InnerXml redundante Namespacedeklarationen.In addition, InnerXml removes redundant namespace declarations. Daher wird die Größe des Dokuments nicht mit redundanten Namespacedeklarationen erhöht, wenn zahlreiche Ausschneide- und Einfügevorgänge erfolgen.As a result, numerous cut and paste operations do not increase the size of your document with redundant namespace declarations. Ein Codebeispiel, das die Auswirkungen von Namespaces auf die InnerXml-Operation veranschaulicht, finden Sie unter der InnerXml-Eigenschaft.For a code example showing the effect of namespaces on the InnerXml operation, see the InnerXml property.

Beim Verwenden der ReplaceData-Methode und der RemoveChild-Methode werden die ersetzten oder entfernten Knoten von der Methode zurückgegeben.When using the ReplaceData and RemoveChild methods, the methods return the replaced or removed node. Dieser Knoten kann an einer anderen Position im XML-DOM (Dokumentobjektmodell) wieder eingefügt werden.This node can then be reinserted somewhere else in the XML Document Object Model (DOM). Die ReplaceData-Methode führt zwei Validierungen des Knotens durch, der in das Dokument eingefügt wird.The ReplaceData method does two validation checks on the node being inserted into the document. Bei der ersten Validierung wird sichergestellt, dass der Knoten dem Knoten untergeordnet wird, der untergeordnete Knoten dieses Typs aufweisen kann.The first check ensures that the node is becoming a child of a node that can have child nodes of its type. Bei der zweiten Validierung wird sichergestellt, dass der eingefügte Knoten kein indirekt übergeordneter Knoten des Knotens ist, dem er untergeordnet wird.The second check ensures that the node being inserted is not an ancestor of the node it is becoming a child of. Ist eine dieser Bedingungen nicht erfüllt, wird eine InvalidOperationException ausgelöst.Violating either of these conditions throws an InvalidOperationException.

Das Hinzufügen oder Entfernen von schreibgeschützten untergeordneten Elementen eines Knotens, der bearbeitet werden kann, ist ein gültiger Vorgang.It is valid to add or remove a read-only child from a node that can be edited. Durch Versuche, den schreibgeschützten Knoten selbst zu ändern, wird eine InvalidOperationException ausgelöst.However, attempts to modify the read-only node itself throws an InvalidOperationException. Ein Bespiel dafür ist das Verändern der untergeordneten Elemente eines XmlEntityReference-Knotens.An example of this is modifying the children of an XmlEntityReference node. Die untergeordneten Elemente sind schreibgeschützt und können nicht verändert werden.The children are read-only and cannot be modified. Durch einen Versuch, diese zu verändern, wird eine InvalidOperationException ausgelöst.Any attempt to modify them throws an InvalidOperationException.

Siehe auchSee also