Conservazione dello spazio vuoto durante il caricamento o l'analisi XML
In questo argomento viene descritto come controllare il comportamento dello spazio vuoto di LINQ to XML.
In uno scenario comune viene letto il codice XML rientrato, viene creata una struttura ad albero XML in memoria senza nodi di testo di tipo spazio vuoto (ossia senza conservare lo spazio vuoto), vengono eseguite alcune operazioni su XML e quindi l'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. In LINQ to XML è possibile ottenere questo risultato conservando lo spazio vuoto durante il caricamento o l'analisi XML e disabilitando la formattazione durante la serializzazione XML.
In questo argomento viene descritto il comportamento dello spazio vuoto dei metodi che popolano la struttura ad albero XML. Per informazioni sul controllo dello spazio vuoto durante la serializzazione di alberi XML, vedere Mantenimento dello spazio vuoto durante la serializzazione.
Comportamento dei metodi che popolano gli 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à lo spazio vuoto non significativo.
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 non viene conservato, 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.