Condividi tramite


Copia di nodi esistenti da un documento a un altro

Il metodo ImportNode è il meccanismo in base al quale un nodo o un intero sottoalbero del nodo viene copiato da un XmlDocument a un altro. Il nodo restituito dalla chiamata è una copia del nodo dal documento di origine, inclusi i valori di attributo, il nome del nodo, il tipo di nodo e tutti gli attributi correlati allo spazio dei nomi, ad esempio il prefisso, il nome locale e l'URI (Uniform Resource Identifier). Il documento di origine non viene modificato. Dopo aver importato il nodo, è comunque necessario aggiungerlo all'albero usando uno dei metodi usati per inserire nodi.

Quando il nodo è collegato al nuovo documento, il nuovo documento è proprietario del nodo. Il motivo è che ogni nodo, al momento della creazione, dispone di un documento proprietario, anche se i nodi vengono creati in frammenti di documento separati. Si tratta di un requisito del DOM (Document Object Model) XML ed è imposto dal design di creazione della factory nella classe XmlDocument. Ad esempio, CreateElement, è l'unico modo per creare nuovi nodi.

A seconda del tipo di nodo del nodo importato e del valore del parametro profondo , le informazioni aggiuntive vengono copiate in base alle esigenze. Questo metodo tenta di eseguire il mirroring del comportamento previsto se un frammento di origine XML o HTML è stato copiato da un documento a un altro, tenendo conto del fatto che per XML, i due documenti possono avere definizioni di tipi di documento diverse (DTD).

Nella tabella seguente viene descritto il comportamento specifico per ogni tipo di nodo che è possibile importare.

Tipo di nodo il parametro deep è true il parametro deep è false
XmlAttribute l'oggetto Specified è impostato su true in XmlAttribute. I discendenti dell'xmlAttribute di origine vengono importati in modo ricorsivo e i nodi risultanti riassemblati per formare il sottoalbero corrispondente. Il parametro deep non si applica ai nodi XmlAttribute , perché trasportano sempre i nodi figlio con essi quando vengono importati.
XmlCDataSection Copia il nodo, inclusi i relativi dati. Copia il nodo, inclusi i relativi dati.
XmlComment Copia il nodo, inclusi i relativi dati. Copia il nodo, inclusi i relativi dati.
XmlDocumentFragment I discendenti del nodo di origine vengono importati in modo ricorsivo e i nodi risultanti riassemblati per formare il sottoalbero corrispondente. Viene creato un xmlDocumentFragment vuoto.
TipoDocumentoXml Copia il nodo, inclusi i relativi dati.* Copia il nodo, inclusi i relativi dati.*
XmlElement I discendenti dell'elemento di origine vengono importati in modo ricorsivo e i nodi risultanti riassemblati per formare il sottoalbero corrispondente. Nota: Gli attributi predefiniti non vengono copiati. Se il documento importato in definisce gli attributi predefiniti per questo nome di elemento, tali attributi vengono assegnati. I nodi di attributo specificati dell'elemento di origine vengono importati e i nodi XmlAttribute generati vengono collegati al nuovo elemento. I nodi discendenti non vengono copiati. Nota: Gli attributi predefiniti non vengono copiati. Se il documento importato in definisce gli attributi predefiniti per questo nome di elemento, tali attributi vengono assegnati.
XmlEntityReference Poiché i documenti di origine e di destinazione potrebbero avere le entità definite in modo diverso, questo metodo copia solo il nodo XmlEntityReference . Il testo sostitutivo non è incluso. Se il documento di destinazione ha definito l'entità, viene assegnato il relativo valore. Poiché i documenti di origine e di destinazione potrebbero avere le entità definite in modo diverso, questo metodo copia solo il nodo XmlEntityReference . Il testo sostitutivo non è incluso. Se il documento di destinazione ha definito l'entità, viene assegnato il relativo valore.
Istruzione di Elaborazione XML Copia il valore di destinazione e di dati dal nodo importato. Copia il valore di destinazione e di dati dal nodo importato.
XmlText Copia il nodo, inclusi i relativi dati. Copia il nodo, inclusi i relativi dati.
XmlSignificantWhitespace Copia il nodo, inclusi i relativi dati. Copia il nodo, inclusi i relativi dati.
XmlWhitespace Copia il nodo, inclusi i relativi dati. Copia il nodo, inclusi i relativi dati.
XmlDeclaration Copia il valore di destinazione e di dati dal nodo importato. Copia il valore di destinazione e di dati dal nodo importato.
Tutti gli altri tipi di nodo Questi tipi di nodo non possono essere importati. Questi tipi di nodo non possono essere importati.

Annotazioni

Anche se i nodi DocumentType possono essere importati, un documento può avere un solo DocumentType. Quindi, dopo aver importato il tipo di documento, prima di inserirlo nell'albero, è necessario assicurarsi che non sia presente alcun tipo di documento nel documento. Per informazioni sulla rimozione di nodi, vedere Rimozione di nodi, contenuto e valori da un documento XML.

Vedere anche