2010-02-05 18 views
6

¿Qué tengo que hacer, ya sea en mi código C# o mi documento XML para que el analizador lee XDocument espacios en blanco literal para Value s de XElement s?¿Cómo puedo conservar los espacios en blanco al analizar XML desde C# LINQ


Antecedentes

tengo un documento XML, parte de la cual tiene el siguiente aspecto:

<NewLineString>&#10;&#13;</NewLineString> 
    <IndentString> </IndentString> 

estoy añadiendo los valores de cada XELement a un diccionario de datos utilizando un LINQ consulta; la parte .ForEach se ve así:

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

Para probar para ver si se conservan los valores de espacio en blanco, estoy imprimiendo una línea de los números de caracteres de cada elemento de valor en el diccionario de datos. En el siguiente código, x representa un KeyValuePair y la Aggregate es simplemente hacer una cadena de los valores enteros de caracteres:

x.Value.ToCharArray() 
    .Aggregate<char,string>("",(word,c) => word + ((int)c).ToString() + " ") 
    )); 

esperaba ver 10 13 para el valor <NewLineString> y 32 32 32 32 para el valor <IndentString>. Sin embargo, no se imprimió nada para cada valor (nota: otros valores escapados en el XML como &lt; imprimieron correctamente sus números de caracteres).

¿Qué debo hacer en mi código C o en mi documento XML para que mi analizador agregue la secuencia completa de espacios en blanco al diccionario de datos?

+0

¿Cómo estás cargando el documento XML? –

Respuesta

1

Intente cargar su documento de esta manera.

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

La pregunta original sobre LINQ ['XDocument's] (http://msdn.microsoft.com/en-us/library/bb345449.aspx), no System.Xml [' XmlDocument's] (http: // msdn.microsoft.com/en-us/library/6kza7w4k.aspx). Pero [mi búsqueda web] (https://www.google.com/search?q=.NET+XML+preserve+whitespace) para obtener una respuesta sobre 'XmlDocument's me vinculó a esta pregunta, por lo que esta respuesta es útil de todos modos . –

-3

o simplemente modificar el código XML de entrada a:

<NewLineString>&#10;&#13;</NewLineString> 
<IndentString xml:space="preserve"> </IndentString> 
Cuestiones relacionadas