Beibehalten von Leerzeichen beim Laden oder Parsen von XMLPreserving White Space while Loading or Parsing XML

In diesem Thema wird beschrieben, wie das Leerraumverhalten von LINQ to XML gesteuert werden kann.This topic describes how to control the white space behavior of LINQ to XML.

Es kommt häufig vor, dass XML mit Einzügen gelesen und dann im Arbeitsspeicher eine XML-Struktur ohne Leerraumtextknoten erstellt wird (Leerräume bleiben also nicht erhalten). Anschließend wird der XML-Code geändert und dann mit Einzügen gespeichert.A common scenario is to read indented XML, create an in-memory XML tree without any white space text nodes (that is, not preserving white space), perform some operations on the XML, and then save the XML with indentation. Wenn Sie den XML-Code mit Formatierung serialisieren, bleibt nur signifikanter Leerraum in der XML-Struktur erhalten.When you serialize the XML with formatting, only significant white space in the XML tree is preserved. Dies ist das Standardverhalten bei LINQ to XML.This is the default behavior for 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.Another common scenario is to read and modify XML that has already been intentionally indented. Sie möchten nicht, dass diese Einzüge irgendwie geändert werden.You might not want to change this indentation in any way. 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.To do this in LINQ to XML, you preserve white space when you load or parse the XML and disable formatting when you serialize the XML.

In diesem Thema wird das Leerraumverhalten von Methoden beschrieben, die XML-Strukturen auffüllen.This topic describes the white space behavior of methods that populate XML trees. Informationen zum Steuern des Leerraumverhaltens beim Serialisieren von XML-Strukturen finden Sie unter Beibehalten von Leerzeichen beim Serialisieren.For information about controlling white space when you serialize XML trees, see Preserving White Space While Serializing.

Verhalten von Methoden, die XML-Strukturen auffüllenBehavior of Methods that Populate XML Trees

Die folgenden Methoden in den Klassen XElement und XDocument füllen eine XML-Struktur auf.The following methods in the XElement and XDocument classes populate an XML tree. Sie können eine XML-Struktur von einer Datei, einem TextReader, einem XmlReader oder einer Zeichenfolge aus auffüllen:You can populate an XML tree from a file, a TextReader, an XmlReader, or a string:

Wenn die Methode nicht LoadOptions als Argument akzeptiert, bleibt nicht signifikanter Leerraum nicht erhalten.If the method does not take LoadOptions as an argument, the method will not preserve insignificant white space.

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.In most cases, if the method takes LoadOptions as an argument, you can optionally preserve insignificant white space as text nodes in the XML tree. Wenn die Methode den XML-Code aber aus einem XmlReader lädt, bestimmt dieser, XmlReader ob Leerraum beibehalten wird.However, if the method is loading the XML from an XmlReader, then the XmlReader determines whether white space will be preserved or not. Die Einrichtung von PreserveWhitespace hat keine Auswirkungen.Setting PreserveWhitespace will have no effect.

Bei diesen Methoden wird nicht signifikanter Leerraum als XText-Knoten in die XML-Struktur eingefügt, sofern Leerraum beibehalten wird.With these methods, if white space is preserved, insignificant white space is inserted into the XML tree as XText nodes. Wenn Leerraum nicht beibehalten wird, erfolgt keine Einfügung von Textknoten.If white space is not preserved, text nodes are not inserted.

Zum Erstellen einer XML-Struktur können Sie einen XmlWriter verwenden.You can create an XML tree by using an XmlWriter. Knoten, die in den XmlWriter geschrieben werden, werden in der Struktur aufgefüllt.Nodes that are written to the XmlWriter are populated in the tree. 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.However, when you build an XML tree using this method, all nodes are preserved, regardless of whether the node is white space or not, or whether the white space is significant or not.

Siehe auchSee Also

Analysieren von XML (C#)Parsing XML (C#)