Beibehalten von Leerraum beim Laden oder Analysieren von XML-Code (LINQ to XML)

In diesem Artikel wird beschrieben, wie das Leerraumverhalten von LINQ to XML gesteuert werden kann.

Ein gängiges Szenario ist das Einlesen von eingerücktem XML-Code, das Erstellen einer XML-Struktur im Arbeitsspeicher ohne Textknoten mit Leerraum (d. h. ohne Beibehaltung von Leerraum), das Anwenden einiger Vorgänge auf den XML-Code und das anschließende Speichern des XML-Codes mit Einrückung. Wenn Sie den XML-Code mit Formatierung serialisieren, bleibt nur signifikanter Leerraum in der XML-Struktur erhalten. Dies ist das Standardverhalten von LINQ to XML.

Aber auch dieses Szenario ist häufig anzutreffen: XML-Code, der bereits absichtlich mit Einzügen versehen wurde, wird gelesen und geändert. Sie möchten nicht, dass diese Einzüge irgendwie geändert werden. In LINQ to XML können Sie dies erreichen, indem Sie den Leerraum beim Laden oder Analysieren des XML-Codes beibehalten und dann beim Serialisieren des XML-Codes die Formatierung deaktivieren.

In diesem Artikel wird das Leerraumverhalten von Methoden beschrieben, die XML-Strukturen auffüllen. Informationen zum Steuern des Leerraumverhaltens beim Serialisieren von XML-Strukturen finden Sie unter Beibehalten von Leerraum beim Serialisieren.

Verhalten von Methoden, die XML-Strukturen auffüllen

Die folgenden Methoden in den Klassen XElement und XDocument füllen eine XML-Struktur auf. Sie können eine XML-Struktur von einer Datei, einem TextReader, einem XmlReader oder einer Zeichenfolge aus auffüllen:

Wenn die Methode LoadOptions nicht als Argument akzeptiert, wird nicht signifikanter Leerraum nicht beibehalten.

In den meisten Fällen können Sie nicht signifikanten Leerraum optional als Textknoten in der XML-Struktur erhalten, sofern die Methode LoadOptions als Argument akzeptiert. Wenn die Methode den XML-Code aber aus einem XmlReader lädt, bestimmt dieser XmlReader ob Leerraum beibehalten wird. Die Einrichtung von PreserveWhitespace hat keine Auswirkungen.

Bei diesen Methoden wird nicht signifikanter Leerraum als XText-Knoten in die XML-Struktur eingefügt, sofern Leerraum beibehalten wird. Wenn Leerraum nicht beibehalten wird, erfolgt keine Einfügung von Textknoten.

Zum Erstellen einer XML-Struktur können Sie einen XmlWriter verwenden. Knoten, die in den XmlWriter geschrieben werden, werden in der Struktur aufgefüllt. Wenn Sie jedoch eine XML-Struktur mit dieser Methode erstellen, bleiben alle Knoten unabhängig davon erhalten, ob der Knoten Leerraum ist und ob er signifikant ist.