Ändern von Knoten, Inhalten und Werten in einem XML-Dokument

Es gibt viele Möglichkeiten, die Knoten und den Inhalt eines Dokuments zu ändern. Sie haben folgende Möglichkeiten:

  • Den Wert von Knoten mithilfe der Value-Eigenschaft ändern.

  • Eine ganze Gruppe von Knoten durch Ersetzen der Knoten mit neuen Knoten ändern. Dies geschieht mithilfe der InnerXml-Eigenschaft.

  • Vorhandene Knoten mithilfe der RemoveChild-Methode durch neue Knoten ersetzen.

  • Den Knoten, die von der XmlCharacterData-Klasse erben, mithilfe einer der Methoden AppendData, InsertData oder ReplaceData zusätzliche Zeichen hinzufügen.

  • Inhalt ändern, indem ein Bereich von Zeichen mithilfe der DeleteData-Methode von Knotentypen entfernt wird, die von XmlCharacterData erben.

Eine einfache Möglichkeit zum Ändern des Werts eines Knotens bietet 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.

Knotentyp Geänderte Daten
Attribut Der Wert des Attributs.
CDATASection Der Inhalt von CDATASection.
Kommentar Der Inhalt des Kommentars.
ProcessingInstruction Der Inhalt mit Ausnahme des Ziels.
Text Der Inhalt des Texts.
XmlDeclaration Der Inhalt der Deklaration, ausgenommen das <?xml-Markup und das ?>-Markup.
Whitespace Der Wert des Leerraums. Sie können festlegen, dass der Wert einer der vier erkannten XML-Leerraumzeichen ist: Leerzeichen, Tabulator, Wagenrücklauf oder Zeilenvorschub.
SignificantWhitespace Der Wert des signifikanten Leerraums. Sie können festlegen, dass der Wert einer der vier erkannten XML-Leerraumzeichen ist: Leerzeichen, Tabulator, Wagenrücklauf oder Zeilenvorschub.

Alle nicht in der Tabelle aufgelisteten Knotentypen sind keine gültigen Knotentypen, für die ein Wert festgelegt werden kann. Durch Festlegen eines Werts für einen anderen Knotentyp wird eine InvalidOperationException ausgelöst.

Die InnerXml-Eigenschaft ändert das Markup der untergeordneten Knoten des aktuellen Knotens. Durch Festlegen dieser Eigenschaft werden die untergeordneten Knoten durch analysierten Inhalt der angegebenen Zeichenfolge ersetzt. Die Analyse wird im Kontext des aktuellen Namespaces durchgeführt. Zusätzlich entfernt InnerXml redundante Namespacedeklarationen. Daher wird die Größe des Dokuments nicht mit redundanten Namespacedeklarationen erhöht, wenn zahlreiche Ausschneide- und Einfügevorgänge erfolgen. Ein Codebeispiel, das die Auswirkungen von Namespaces auf die InnerXml-Operation veranschaulicht, finden Sie unter der InnerXml-Eigenschaft.

Beim Verwenden der ReplaceData-Methode und der RemoveChild-Methode werden die ersetzten oder entfernten Knoten von der Methode zurückgegeben. Dieser Knoten kann an einer anderen Position im XML-DOM (Dokumentobjektmodell) wieder eingefügt werden. Die ReplaceData-Methode führt zwei Validierungen des Knotens durch, der in das Dokument eingefügt wird. Bei der ersten Validierung wird sichergestellt, dass der Knoten dem Knoten untergeordnet wird, der untergeordnete Knoten dieses Typs aufweisen kann. Bei der zweiten Validierung wird sichergestellt, dass der eingefügte Knoten kein indirekt übergeordneter Knoten des Knotens ist, dem er untergeordnet wird. Ist eine dieser Bedingungen nicht erfüllt, wird eine InvalidOperationException ausgelöst.

Das Hinzufügen oder Entfernen von schreibgeschützten untergeordneten Elementen eines Knotens, der bearbeitet werden kann, ist ein gültiger Vorgang. Durch Versuche, den schreibgeschützten Knoten selbst zu ändern, wird eine InvalidOperationException ausgelöst. Ein Bespiel dafür ist das Verändern der untergeordneten Elemente eines XmlEntityReference-Knotens. Die untergeordneten Elemente sind schreibgeschützt und können nicht verändert werden. Durch einen Versuch, diese zu verändern, wird eine InvalidOperationException ausgelöst.

Siehe auch