Conservación del espacio en blanco durante la carga o el análisis de XML (LINQ to XML)

En este artículo se describe cómo controlar el comportamiento de espacio en blanco de LINQ to XML.

Un escenario 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 al cargar o analizar el XML y deshabilitar el formato cuando serialice el XML.

En este artículo se describe el comportamiento de espacio en blanco de métodos que rellenan árboles XML. Para información sobre cómo controlar los espacios en blanco al serializar árboles XML, consulte Conservar el espacio en blanco al serializar (LINQ to XML).

Comportamiento de los métodos que rellenan árboles XML

Los siguientes métodos de las clases XElement y XDocument rellenan un árbol XML. Puede rellenar un árbol XML desde un archivo, un TextReader, un XmlReader o una cadena:

Si el método no toma LoadOptions como argumento, el método no conservará los espacios en blanco no significativos.

En la mayoría de casos, si el método toma LoadOptions como argumento, opcionalmente se pueden conservar los espacios en blanco no significativos como nodos de texto en el árbol XML. No obstante, si el método carga XML desde XmlReader, XmlReader determina si los espacios en blanco se conservan. Establecer PreserveWhitespace no tendrá ningún efecto.

Con estos métodos, si se conservan los espacios en blanco, se inserta un espacio en blanco insignificante en el árbol XML como nodos XText. Si no se conserva el espacio en blanco, no se insertan nodos de texto.

Puede crear un árbol XML mediante XmlWriter. Los nodos escritos en XmlWriter se rellenan en el árbol. No obstante, al crear un árbol XML usando este método se conservan todos los nodos, independientemente de si el nodo es o no un espacio en blanco, o si el espacio en blanco es o no significativo.