Zachowywanie odstępu podczas ładowania lub analizowania kodu XML (LINQ to XML)

W tym artykule opisano sposób kontrolowania zachowania białych znaków LINQ to XML.

Typowym scenariuszem jest odczytywanie wciętego kodu XML, tworzenie drzewa XML w pamięci bez żadnych węzłów tekstowych białych znaków (czyli brak zachowania odstępu), wykonywanie niektórych operacji na kodzie XML, a następnie zapisywanie kodu XML przy użyciu wcięcia. Podczas serializacji kodu XML przy użyciu formatowania zachowywane jest tylko znaczne odstępy w drzewie XML. Jest to domyślne zachowanie linQ to XML.

Innym typowym scenariuszem jest odczytywanie i modyfikowanie kodu XML, który został już celowo wcięta. Możesz nie chcieć zmienić tego wcięcia w żaden sposób. Aby to zrobić w linQ to XML, zachowasz białe znaki podczas ładowania lub analizowania kodu XML i wyłączasz formatowanie podczas serializacji kodu XML.

W tym artykule opisano zachowanie białych znaków metod, które wypełniają drzewa XML. Aby uzyskać informacje na temat kontrolowania białych znaków podczas serializacji drzew XML, zobacz Zachowywanie odstępu podczas serializacji.

Zachowanie metod, które wypełniają drzewa XML

Następujące metody w klasach XElement i XDocument wypełniają drzewo XML. Drzewo XML można wypełnić z pliku , TextReader, XmlReaderlub ciągu:

Jeśli metoda nie zostanie uznana LoadOptions za argument, metoda nie zachowa nieistotnego odstępu.

W większości przypadków, jeśli metoda przyjmuje LoadOptions jako argument, opcjonalnie można zachować nieistotne odstępy jako węzły tekstowe w drzewie XML. Jeśli jednak metoda ładuje kod XML z XmlReaderklasy , określa, XmlReader czy biały znak zostanie zachowany, czy nie. Ustawienie PreserveWhitespace nie będzie miało żadnego wpływu.

Przy użyciu tych metod, jeśli białe znaki są zachowywane, nieistotne białe znaki są wstawione do drzewa XML jako XText węzły. Jeśli białe znaki nie są zachowywane, węzły tekstowe nie są wstawione.

Drzewo XML można utworzyć przy użyciu elementu XmlWriter. Węzły zapisywane w XmlWriter obiekcie są wypełniane w drzewie. Jednak podczas tworzenia drzewa XML przy użyciu tej metody wszystkie węzły są zachowywane, niezależnie od tego, czy węzeł jest biały, czy nie, czy biały znak jest znaczący, czy nie.