Condividi tramite


Modifica di nodi, contenuto e valori in un documento XML

Esistono molti modi per modificare i nodi e il contenuto in un documento. È possibile:

  • Modificare il valore dei nodi usando la Value proprietà .

  • Modificare un intero set di nodi sostituendo i nodi con nuovi nodi. Questa operazione viene eseguita usando la InnerXml proprietà .

  • Sostituire i nodi esistenti con nuovi nodi usando il RemoveChild metodo .

  • Aggiungere ulteriori caratteri ai nodi che ereditano dalla classe XmlCharacterData utilizzando i metodi AppendData, InsertData o ReplaceData.

  • Modificare il contenuto rimuovendo un intervallo di caratteri usando il DeleteData metodo sui tipi di nodo che ereditano da XmlCharacterData.

Una tecnica semplice per modificare il valore di un nodo consiste nell'usare node.Value = "new value";. Nella tabella seguente sono elencati i tipi di nodo su cui funziona questa singola riga di codice e quali dati vengono esattamente modificati per ciascun tipo di nodo.

Tipo di nodo Dati modificati
Attributo Valore dell'attributo.
CDATASection Il contenuto della sezione CDATA.
Commento Contenuto del commento.
Istruzione di Elaborazione Contenuto, escluso la destinazione.
Testo Contenuto del testo.
XmlDeclaration Il contenuto della dichiarazione, esclusi i markup <?xml e ?>.
Spazi vuoti Valore dello spazio vuoto. È possibile impostare il valore su uno dei quattro caratteri di spazio bianco XML riconosciuti: spazio, tab, CR o LF.
SignificantWhitespace Valore dello spazio vuoto significativo. È possibile impostare il valore su uno dei quattro caratteri di spazio bianco XML riconosciuti: spazio, tab, CR o LF.

Qualsiasi tipo di nodo non elencato nella tabella non è un tipo di nodo valido per impostare un valore su . L'impostazione di un valore in qualsiasi altro tipo di nodo genera un'eccezione InvalidOperationException.

La InnerXml proprietà modifica il markup dei nodi figlio per il nodo corrente. L'impostazione di questa proprietà sostituisce i nodi figlio con il contenuto analizzato della stringa specificata. L'analisi viene eseguita nel contesto dello spazio dei nomi corrente. Inoltre, InnerXml rimuove le dichiarazioni dello spazio dei nomi ridondanti. Pertanto, numerose operazioni di taglia e incolla non aumentano le dimensioni del documento con dichiarazioni di spazio dei nomi ridondanti. Per un esempio di codice che mostra l'effetto dei namespace sull'operazione InnerXml, consultare la proprietà InnerXml.

Quando si usano i ReplaceData metodi e RemoveChild , i metodi restituiscono il nodo sostituito o rimosso. Questo nodo può quindi essere reinseribile in un'altra posizione nel DOM (Document Object Model) XML. Il ReplaceData metodo esegue due controlli di convalida sul nodo da inserire nel documento. Il primo controllo garantisce che il nodo diventi figlio di un nodo che può avere nodi del suo tipo. Il secondo controllo garantisce che il nodo inserito non sia un predecessore del nodo di cui sta diventando figlio. La violazione di una di queste condizioni genera un'eccezione InvalidOperationException.

È valido aggiungere o rimuovere un elemento figlio di sola lettura da un nodo che può essere modificato. Tuttavia, i tentativi di modificare il nodo di sola lettura generano un'eccezione InvalidOperationException. Un esempio è la modifica degli elementi figlio di un nodo XmlEntityReference. Gli elementi sono di sola lettura e non possono essere modificati. Qualsiasi tentativo di modificarli genera un'eccezione InvalidOperationException.

Vedere anche