Comment préserver les caractères d’espacement lors de l’parsing de XML à partir de C # LINQ

Que dois-je faire dans mon code C # ou dans mon document XML pour que l’parsingur XDocument lise les espaces littéraux de Value s of XElement s?


Contexte

J’ai un document XML, dont une partie ressemble à ceci:

  

   

XELement les valeurs de chaque XELement à un dictionnaire de données à l’aide d’une requête LINQ; .ForEach partie .ForEach ressemble à ceci:

  .ForEach(x => SchemaDictionary.Add( LogicHelper.GetEnumValue(x.Name.ToSsortingng()), x.Value)); 

Pour tester si les valeurs d’espaces ont été préservées, j’imprime une ligne des numéros de caractères de chaque élément de valeur du dictionnaire de données. Dans le code suivant, x représente un KeyValuePair et l’ Aggregate KeyValuePair simplement une chaîne des valeurs entières de caractères:

 x.Value.ToCharArray() .Aggregate("",(word,c) => word + ((int)c).ToSsortingng() + " " ) )); 

Je m’attendais à voir 10 13 pour la valeur et 32 32 32 32 pour la valeur . Cependant, rien n’a été imprimé pour chaque valeur ( remarque: d’autres valeurs échappées dans le XML, telles que < ont correctement imprimé leurs numéros de caractères ).

Que dois-je faire dans mon code C # ou dans mon document XML pour que mon parsingur syntaxique ajoute la chaîne complète d’espaces au dictionnaire de données?

Essayez de charger votre XDocument avec le LoadOptions.PreserveWhitespace

Essayez de charger votre document de cette façon.

 XmlDocument doc = new XmlDocument(); doc.PreserveWhitespace = true; doc.Load("book.xml"); 

ou simplement modifier votre entrée XML en: