Preservar o espaço em branco ao carregar ou analisar XML (LINQ to XML)

Este artigo descreve como controlar o comportamento de espaço em branco do LINQ to XML.

Um cenário comum é ler o XML recuado, criar uma árvore XML na memória sem nenhum nó de texto de espaço em branco (isto é, não preservar espaço em branco), execute algumas operações no XML e, em seguida, salvar o XML com recuo. Quando você serializa o XML com formatação, somente os espaços em branco significativos na árvore XML são preservados. Esse é o comportamento padrão para LINQ to XML.

Outro cenário comum é ler e modificar XML que já foi recuado intencionalmente. Você pode não querer modificar este recuo de nenhuma forma. Para fazer isso no LINQ to XML, você preserva o espaço em branco quando você carregar ou analisar XML e desabilita a formatação quando você serializa XML.

Este tópico descreve o comportamento de espaço em branco dos métodos que populam árvores XML. Para obter informações sobre como controlar o espaço em branco quando serializar árvores XML, consulte Preservar espaço em branco ao serializar.

Comportamento dos métodos que populam árvores XML

Os seguintes métodos nas classes de XElement e de XDocument preenchem uma árvore XML. Você pode preencher uma árvore XML de um arquivo, um TextReader, um XmlReader, ou de uma cadeia de caracteres:

Se o método não utiliza LoadOptions como um argumento, o método não preservará o espaço em branco insignificante.

Na maioria dos casos, se o método utiliza LoadOptions como um argumento, você pode opcionalmente preservar espaço em branco irrisória como nós de texto na árvore XML. Entretanto, se o método é carregar XML de XmlReader, então XmlReader determina se o espaço em branco será preservada ou não. A configuração PreserveWhitespace não terá efeito.

Com esses métodos, se o espaço em branco é preservada, o espaço em branco irrisória é inserido na árvore XML como nós de XText . Se o espaço em branco não for preservado, os nós de texto não serão inseridos.

Você pode criar uma árvore XML usando XmlWriter. Os nós que são gravados em XmlWriter são preenchidos na árvore. No entanto, quando você cria uma árvore XML usando esse método, todos os nós são mantidos, independentemente se o nó é o espaço em branco ou não, ou se o espaço em branco é significativo ou não.