Modifica di nodi, contenuto e valori in un documento XMLModifying Nodes, Content, and Values in an XML Document

Sono disponibili molti modi per modificare i nodi e il contenuto in un documento.There are many ways you can modify the nodes and content in a document. È possibile:You can:

  • Modificare il valore dei nodi usando la proprietà Value.Change the value of nodes using the Value property.

  • Modificare un intero set di nodi, sostituendoli con nodi nuovi.Modify an entire set of nodes by replacing the nodes with new nodes. Questa operazione viene eseguita tramite la proprietà InnerXml.This is done using the InnerXml property.

  • Sostituire i nodi esistenti con nodi nuovi usando il metodo RemoveChild.Replace existing nodes with new nodes using the RemoveChild method.

  • Aggiungere ulteriori caratteri ai nodi che ereditano dalla classe XmlCharacterData usando il metodo AppendData, InsertData o ReplaceData.Add additional characters to nodes that inherit from the XmlCharacterData class using the AppendData, InsertData, or ReplaceData methods.

  • Modificare il contenuto rimuovendo una serie di caratteri con il metodo DeleteData nei tipi di nodo che ereditano da XmlCharacterData.Modify the content by removing a range of characters using the DeleteData method on node types that inherit from XmlCharacterData.

Una tecnica semplice per modificare il valore di un nodo consiste nell'usare node.Value = "new value";.A simple technique for changing the value of a node is to use node.Value = "new value";. Nella tabella seguente sono elencati i tipi di nodo sui quali funziona quest'unica riga di codice ed esattamente quali dati verranno modificati per quel tipo di nodo.The following table lists the node types that this single line of code works on and exactly what data for that node type is changed.

Tipo di nodoNode type Dati modificatiData changed
AttributoAttribute Valore dell'attributo.The value of the attribute.
CDATASectionCDATASection Contenuto di CDATASection.The content of the CDATASection.
CommentoComment Contenuto del commento.The content of the comment.
ProcessingInstructionProcessingInstruction Contenuto eccetto la destinazione.The content, excluding the target.
TestoText Il contenuto del testo.The content of the text.
XmlDeclarationXmlDeclaration Il contenuto della dichiarazione, esclusi i markup <?xml e ?>.The content of the declaration, excluding the <?xml and ?> markup.
WhitespaceWhitespace Il valore dello spazio vuoto.The value of the white space. È possibile impostare il valore in modo che sia uno dei quattro caratteri di spazio vuoto XML riconosciuti: spazio, tabulazione, ritorno a capo o avanzamento riga.You can set the value to be one of the four recognized XML white space characters: space, tab, CR, or LF.
SignificantWhitespaceSignificantWhitespace Il valore dello spazio vuoto significativo.The value of the significant white space. È possibile impostare il valore in modo che sia uno dei quattro caratteri di spazio vuoto XML riconosciuti: spazio, tabulazione, ritorno a capo o avanzamento riga.You can set the value to be one of the four recognized XML white space characters: space, tab, CR, or LF.

Qualsiasi tipo di nodo non elencato nella tabella non è un tipo di nodo valido in base al quale impostare il valore.Any node type not listed in the table is not a valid node type to set a value on. Se si imposta un valore su qualsiasi altro tipo di nodo, viene generato un tipo InvalidOperationException.Setting a value on any other node type throws an InvalidOperationException.

La proprietà InnerXml consente di modificare il markup dei nodi figlio per il nodo corrente.The InnerXml property changes the markup of the child nodes for the current node. Se si imposta questa proprietà, i nodi figlio vengono sostituiti con il contenuto analizzato della stringa specificata.Setting this property replaces the child nodes with the parsed contents of the given string. L'analisi viene eseguita nel contesto dello spazio dei nomi corrente.The parsing is done in the current namespace context. Inoltre, la proprietà InnerXml consente di rimuovere le dichiarazioni ridondanti dello spazio dei nomi.In addition, InnerXml removes redundant namespace declarations. Di conseguenza, anche in caso di numerose operazioni di taglia e incolla, le dimensioni del documento non aumenteranno a causa di dichiarazioni ridondanti dello spazio dei nomi.As a result, numerous cut and paste operations do not increase the size of your document with redundant namespace declarations. Per un esempio di codice in cui viene illustrato l'effetto degli spazi dei nomi sull'operazione InnerXml, vedere la proprietà InnerXml.For a code example showing the effect of namespaces on the InnerXml operation, see the InnerXml property.

Quando vengono usati, i metodi ReplaceData e RemoveChild restituiscono il nodo sostituito o rimosso,When using the ReplaceData and RemoveChild methods, the methods return the replaced or removed node. che può quindi essere reinserito altrove nel DOM XML.This node can then be reinserted somewhere else in the XML Document Object Model (DOM). Il metodo ReplaceData consente di eseguire due controlli di convalida sul nodo che viene inserito nel documento.The ReplaceData method does two validation checks on the node being inserted into the document. Il primo controllo assicura che il nodo stia diventando figlio di un nodo che può avere nodi figlio del suo tipo.The first check ensures that the node is becoming a child of a node that can have child nodes of its type. Il secondo controllo assicura che il nodo inserito non sia progenitore del nodo del quale sta diventando figlio.The second check ensures that the node being inserted is not an ancestor of the node it is becoming a child of. In presenza della violazione di una di queste condizioni, viene generato un tipo InvalidOperationException.Violating either of these conditions throws an InvalidOperationException.

L'aggiunta o la rimozione di un figlio in sola lettura da un nodo che può essere modificato è un'operazione valida.It is valid to add or remove a read-only child from a node that can be edited. Ma se si tenta di modificare il nodo in sola lettura, viene generato un tipo InvalidOperationException.However, attempts to modify the read-only node itself throws an InvalidOperationException. Un esempio di questa situazione è la modifica dei nodi figlio di un nodo XmlEntityReference.An example of this is modifying the children of an XmlEntityReference node. Poiché i nodi figlio sono in sola lettura, non possono essere modificatiThe children are read-only and cannot be modified. e se si tenta di modificarli, viene generato un tipo InvalidOperationException.Any attempt to modify them throws an InvalidOperationException.

Vedere ancheSee Also

Modello DOM (Document Object Mode) XMLXML Document Object Model (DOM)