Compartir a través de


Copiar nodos existentes de un documento a otro

El método ImportNode es el mecanismo por el que se copia un nodo o un subárbol de nodo completo de un xmlDocument a otro. El nodo devuelto desde la llamada es una copia del nodo del documento de origen, incluidos los valores de atributo, el nombre del nodo, el tipo de nodo y todos los atributos relacionados con el espacio de nombres, como el prefijo, el nombre local y el identificador uniforme de recursos del espacio de nombres (URI). No se cambia el documento de origen. Después de importar el nodo, todavía tiene que agregarlo al árbol mediante uno de los métodos usados para insertar nodos.

Cuando el nodo se adjunta a su nuevo documento, el nuevo documento posee el nodo. El motivo es que cada nodo, cuando se crea, tiene un documento propietario, incluso si los nodos se crean en fragmentos de documento independientes. Este es un requisito del modelo de objetos de documento XML (DOM) y lo aplica el diseño de creación de fábrica en la clase XmlDocument . Por ejemplo, CreateElement es la única manera de crear nuevos nodos.

Según el tipo de nodo del nodo importado y el valor del parámetro deep , se copia información adicional según corresponda. Este método intenta reflejar el comportamiento esperado si un fragmento de origen XML o HTML se copió de un documento a otro, teniendo en cuenta el hecho de que para XML, los dos documentos pueden tener definiciones de tipo de documento diferentes (DTD).

En la tabla siguiente se describe el comportamiento específico de cada tipo de nodo que se puede importar.

Tipo de nodo el parámetro deep es true el parámetro deep es false
XmlAttribute La propiedad Specified está establecida en true en el nodo XmlAttribute. Los descendientes del xmlAttribute de origen se importan de forma recursiva y los nodos resultantes se vuelven a ensamblar para formar el subárbol correspondiente. El parámetro deep no se aplica a los nodos XmlAttribute , ya que siempre llevan sus nodos secundarios con ellos cuando se importan.
XmlCDataSection Copia el nodo, incluidos sus datos. Copia el nodo, incluidos sus datos.
XmlComment Copia el nodo, incluidos sus datos. Copia el nodo, incluidos sus datos.
XmlDocumentFragment Los descendientes del nodo de origen se importan de forma recursiva y los nodos resultantes se vuelven a ensamblar para formar el subárbol correspondiente. Se crea un xmlDocumentFragment vacío.
XmlDocumentType Copia el nodo, incluidos sus datos.* Copia el nodo, incluidos sus datos.*
XmlElement Los descendientes del elemento de origen se importan de forma recursiva y los nodos resultantes se vuelven a ensamblar para formar el subárbol correspondiente. Nota: Los atributos predeterminados no se copian. Si el documento que se está importando define atributos predeterminados para el nombre de este elemento, se asignan. Los nodos de atributo especificados del elemento de origen se importan y los nodos XmlAttribute generados se adjuntan al nuevo elemento. Los nodos descendientes no se copian. Nota: Los atributos predeterminados no se copian. Si el documento que se está importando define atributos predeterminados para el nombre de este elemento, se asignan.
XmlEntityReference Dado que los documentos de origen y destino podrían tener las entidades definidas de forma diferente, este método solo copia el nodo XmlEntityReference . No se incluye el texto de reemplazo. Si el documento de destino tiene definida la entidad, se asigna su valor. Dado que los documentos de origen y destino podrían tener las entidades definidas de forma diferente, este método solo copia el nodo XmlEntityReference . No se incluye el texto de reemplazo. Si el documento de destino tiene definida la entidad, se asigna su valor.
Instrucción de procesamiento XML Copia el valor de destino y de datos del nodo importado. Copia el valor de destino y de datos del nodo importado.
XmlText Copia el nodo, incluidos sus datos. Copia el nodo, incluidos sus datos.
XmlSignificantWhitespace Copia el nodo, incluidos sus datos. Copia el nodo, incluidos sus datos.
XmlWhitespace Copia el nodo, incluidos sus datos. Copia el nodo, incluidos sus datos.
Declaración XML Copia el valor de destino y de datos del nodo importado. Copia el valor de destino y de datos del nodo importado.
Todos los demás tipos de nodo Estos tipos de nodo no se pueden importar. Estos tipos de nodo no se pueden importar.

Nota:

Aunque se pueden importar nodos DocumentType, un documento solo puede tener un DocumentType. De modo que, una vez importado el tipo de documento, antes de insertarlo en el árbol tiene que asegurarse de que no hay ningún tipo de documento en el documento. Para obtener información sobre cómo quitar nodos, vea Quitar nodos, contenido y valores de un documento XML.

Consulte también