Conserver l’espace blanc lors du chargement ou de l’analyse xml (LINQ to XML)

Cet article explique comment contrôler le comportement de l’espace blanc de LINQ to 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.

Cet article décrit la gestion des espaces blancs par les méthodes qui remplissent les arborescences XML. Pour plus d’informations sur le contrôle des espaces blancs quand vous sérialisez des arborescences XML, consultez Conservation des espaces blancs lors de la sérialisation.

Comportement des méthodes qui remplissent des arborescences XML

Les méthodes suivantes dans les classes XElement et XDocument remplissent une arborescence XML. Vous pouvez remplir une arborescence XML à partir d'un fichier, d'un objet TextReader, d'un objet XmlReader ou d'une chaîne :

Si la méthode ne prend pas LoadOptions comme argument, elle ne conservera pas les espaces non significatifs.

Dans la plupart des cas, si la méthode prend l'objet LoadOptions comme argument, vous pouvez, si vous le souhaitez, conserver les espaces non significatifs en tant que nœuds de texte dans l'arborescence XML. Toutefois, si la méthode charge le code XML à partir d'un objet XmlReader, l'objet XmlReader détermine si les espaces seront conservés. La définition de PreserveWhitespace n'aura aucun effet.

Avec ces méthodes, si les espaces sont conservés, des espaces non significatifs sont insérés dans l’arborescence XML en tant que nœuds XText. Si l’espace blanc n’est pas conservé, les nœuds de texte ne sont pas insérés.

Vous pouvez créer une arborescence XML à l’aide d’un objet XmlWriter. Les nœuds écrits dans l’objet XmlWriter sont remplis dans l’arborescence. Toutefois, lorsque vous générez une arborescence XML à l’aide de cette méthode, tous les nœuds sont conservés, qu’ils soient constitués d’espaces ou non et que ces espaces soient significatifs ou non.