Conservación de espacio en blanco al serializar (LINQ to XML)

En este artículo se describe cómo controlar los espacios en blanco a la hora de serializar un árbol XML.

Un caso muy común es aquel en el que se leen datos XML con sangría, se crea un árbol XML en memoria sin ningún nodo de texto con espacios en blanco (es decir, sin conservar los espacios en blanco), se realizan ciertas operaciones sobre el XML y este se guarda con sangría. Si se serializa el XML con formato, solo se preservan en el XML aquellos espacios en blanco más significativos. Éste es el comportamiento predeterminado en LINQ to XML.

Otro escenario muy común es aquel en el que se lee y se modifica código XML en el que se ha aplicado sangría de forma intencionada. Es posible que no desee modificar esta sangría de ninguna forma. Para hacerlo en LINQ to XML, puede preservar los espacios en blanco a la hora de cargar o analizar el XML y si deshabilita el formato cuando serialice el XML.

Tratamiento de los espacios en blanco en métodos que serializan árboles XML

Los siguientes métodos de las clases XElement y XDocument serializan un árbol XML. Es posible serializar un árbol XML en un archivo, un TextReader o un XmlReader. El método ToString serializa en una cadena.

Si el método no recibe un SaveOptions como argumento, el método realizará un formato (sangría) del XML serializado. En ese caso, se descartarán todos los espacios en blanco del árbol XML que no sean significativos.

Si el método toma SaveOptions como argumento, se puede especificar que el método no dé formato (sangría) al XML serializado. En ese caso, se preservarán todos los espacios en blanco del árbol XML.