Préserver les espaces blancs pendant la sérialisation (LINQ to XML)

Cet article explique comment contrôler les espaces blancs lors de la sérialisation d’une arborescence XML.

Un scénario courant consiste à lire le code XML mis en retrait, à créer une arborescence XML en mémoire sans nœuds d’espaces blancs (autrement dit, les espaces blancs ne sont pas conservés), à effectuer certaines opérations sur le code XML, puis à enregistrer le code XML avec mise en retrait. Lorsque vous sérialisez le code XML avec mise en forme, seuls les espaces significatifs dans l'arborescence XML sont conservés. Il s’agit du comportement par défaut pour LINQ to XML.

Un autre scénario courant consiste à lire et à modifier du code XML qui a déjà été intentionnellement mis en retrait. Vous ne souhaiterez peut-être modifier cette mise en retrait en aucune manière. Pour faire cela dans LINQ to XML, conservez les espaces blancs au moment de charger ou d’analyser le code XML et désactivez la mise en forme au moment de sérialiser le code XML.

Gestion des espaces blancs par les méthodes qui sérialisent les arborescences XML

Les méthodes suivantes dans les classes XElement et XDocument sérialisent une arborescence XML. Vous pouvez sérialiser une arborescence XML vers un fichier, un objet TextReader ou un objet XmlReader. La méthode ToString sérialise vers une chaîne.

Si la méthode ne prend pas l’objet SaveOptions comme argument, elle met en forme (en retrait) le code XML sérialisé. Dans ce cas, tous les espaces blancs non significatifs dans l'arborescence XML seront ignorés.

Si la méthode prend l'objet SaveOptions comme argument, vous pouvez spécifier qu'elle ne mettra pas en forme (en retrait) le code XML sérialisé. Dans ce cas, tous les espaces blancs dans l’arborescence XML seront conservés.