Conservare gli spazi vuoti durante il caricamento o l'analisi di XML (LINQ to XML)

Questo articolo descrive come controllare il comportamento degli spazi vuoti di LINQ to XML.

In uno scenario comune viene letto il codice XML rientrato, viene creato un albero XML in memoria senza nodi di testo con spazi vuoti (ossia senza conservare gli spazi vuoti), vengono eseguite alcune operazioni sul codice XML e quindi il codice XML viene salvato senza rientro. Quando si serializza l'XML con la formattazione, nell'albero XML viene conservato solo lo spazio vuoto significativo. Questo è il comportamento predefinito per LINQ to XML.

In un altro scenario comune viene letto e modificato codice XML che è già stato intenzionalmente rientrato. È possibile che si desideri non modificare questo rientro in alcun modo. Per eseguire questa operazione in LINQ to XML, gli spazi vuoti vengono conservati quando si carica o si analizza il codice XML e si disabilita la formattazione quando si serializza l'XML.

Questo articolo descrive il comportamento degli spazi vuoti dei metodi che popolano gli alberi XML. Per informazioni sul controllo degli spazi vuoti durante la serializzazione di alberi XML, vedere Conservare gli spazi vuoti durante la serializzazione.

Comportamento dei metodi che popolano alberi XML

I metodi seguenti nelle classi XElement e XDocument popolano un albero XML. È possibile popolare un albero XML da un file, un oggetto TextReader, un oggetto XmlReader o una stringa:

Se il metodo non accetta LoadOptions come argomento, non conserverà gli spazi vuoti non significativi.

Nella maggior parte dei casi, se il metodo accetta LoadOptions come argomento, facoltativamente è possibile conservare lo spazio vuoto non significativo come nodi di testo nell'albero XML. Tuttavia, se il metodo carica l'XML da un oggetto XmlReader, XmlReader determina se lo spazio vuoto verrà conservato o meno. L'impostazione di PreserveWhitespace non avrà effetto.

Se lo spazio vuoto viene conservato, con questi metodi lo spazio vuoto non significativo viene inserito nell'albero XML come nodi XText. Se gli spazi vuoti non vengono conservati, i nodi di testo non vengono inseriti.

È possibile creare un albero XML usando XmlWriter. I nodi scritti in XmlWriter vengono popolati nell'albero. Tuttavia, quando si compila un albero XML usando questo metodo, vengono conservati tutti i nodi, a prescindere che corrispondano o meno a spazio vuoto e indipendentemente dal fatto che lo spazio vuoto sia o meno significativo.