Condividi tramite


XmlDocument.ImportNode(XmlNode, Boolean) Metodo

Definizione

Importa un nodo da un altro documento al documento corrente.

public:
 virtual System::Xml::XmlNode ^ ImportNode(System::Xml::XmlNode ^ node, bool deep);
public virtual System.Xml.XmlNode ImportNode (System.Xml.XmlNode node, bool deep);
abstract member ImportNode : System.Xml.XmlNode * bool -> System.Xml.XmlNode
override this.ImportNode : System.Xml.XmlNode * bool -> System.Xml.XmlNode
Public Overridable Function ImportNode (node As XmlNode, deep As Boolean) As XmlNode

Parametri

node
XmlNode

Nodo da importare.

deep
Boolean

true per eseguire una clonazione completa; in caso contrario, false.

Restituisce

XmlNode

Oggetto XmlNode importato.

Eccezioni

Chiamata di questo metodo su un tipo di nodo che non può essere importato.

Esempio

Nell'esempio seguente viene importato un nodo libro da un secondo documento XML nel documento XML originale.

#using <System.Xml.dll>

using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
   
   //Create the XmlDocument.
   XmlDocument^ doc = gcnew XmlDocument;
   doc->LoadXml( "<bookstore><book genre='novel' ISBN='1-861001-57-5'><title>Pride And Prejudice</title></book></bookstore>" );
   
   //Create another XmlDocument which holds a list of books.
   XmlDocument^ doc2 = gcnew XmlDocument;
   doc2->Load( "books.xml" );
   
   //Import the last book node from doc2 into the original document.
   XmlNode^ newBook = doc->ImportNode( doc2->DocumentElement->LastChild, true );
   doc->DocumentElement->AppendChild( newBook );
   Console::WriteLine( "Display the modified XML..." );
   doc->Save( Console::Out );
}

using System;
using System.IO;
using System.Xml;

public class Sample
{
  public static void Main()
  {
    //Create the XmlDocument.
    XmlDocument doc = new XmlDocument();
    doc.LoadXml("<bookstore>" +
                "<book genre='novel' ISBN='1-861001-57-5'>" +
                "<title>Pride And Prejudice</title>" +
                "</book>" +
                "</bookstore>");

    //Create another XmlDocument which holds a list of books.
    XmlDocument doc2 = new XmlDocument();
    doc2.Load("books.xml");

    //Import the last book node from doc2 into the original document.
    XmlNode newBook = doc.ImportNode(doc2.DocumentElement.LastChild, true);
    doc.DocumentElement.AppendChild(newBook);

    Console.WriteLine("Display the modified XML...");
    doc.Save(Console.Out);
  }
}
Option Explicit
Option Strict

Imports System.IO
Imports System.Xml

Public Class Sample
    
    Public Shared Sub Main()
        'Create the XmlDocument.
        Dim doc As New XmlDocument()
        doc.LoadXml("<bookstore>" & _
                    "<book genre='novel' ISBN='1-861001-57-5'>" & _
                    "<title>Pride And Prejudice</title>" & _
                    "</book>" & _
                    "</bookstore>")
        
        'Create another XmlDocument which holds a list of books.
        Dim doc2 As New XmlDocument()
        doc2.Load("books.xml")
        
        'Import the last book node from doc2 into the original document.
        Dim newBook As XmlNode = doc.ImportNode(doc2.DocumentElement.LastChild, True)
        doc.DocumentElement.AppendChild(newBook)
        
        Console.WriteLine("Display the modified XML...")
        doc.Save(Console.Out)
    End Sub
End Class

Nell'esempio viene usato il file , books.xml, come input.

<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
  <book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

Commenti

Il nodo restituito non ha un elemento padre. Il nodo di origine non viene modificato o rimosso dal documento originale; ImportNode crea una copia del nodo di origine.

L'importazione di un nodo crea un XmlNode oggetto di proprietà del documento di importazione, con Name e NodeType identico al nodo di origine. Il nuovo oggetto include anche gli attributi correlati agli spazi dei nomi (Prefix, LocalNamee NamespaceURI).

A seconda del tipo di nodo del nodo importato e del valore del deep parametro, 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 (riconoscendo che, nel caso XML, i due documenti potrebbero avere DTD diversi).

Nella tabella seguente viene descritto il comportamento specifico per ogni XmlNodeTypeoggetto .

XmlNodeType ImportNode(true) ImportNode(false)
Attributo La Specified proprietà è impostata su true sull'oggetto generato XmlAttribute. I discendenti dell'origine XmlAttribute vengono importati in modo ricorsivo e i nodi risultanti riassemblati per formare il sottoalbero corrispondente. Il deep parametro non si applica ai XmlAttribute nodi, ma li porta sempre con sé quando vengono importati.
Cdata Copia il nodo, compresi i dati. Copia il nodo, compresi i dati.
Commento Copia il nodo, compresi i dati. Copia il nodo, compresi i dati.
DocumentFragment Gli elementi discendenti del nodo di origine vengono importati in modo ricorsivo e i nodi risultanti vengono riassemblati per formare il sottoalbero corrispondente. Viene generato un vuoto XmlDocumentFragment .
DocumentType Copia il nodo, compresi i dati.* Copia il nodo, compresi i dati.*
Elemento I discendenti dell'elemento di origine e i relativi nodi di attributo specificati 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 verso il quale avviene l'importazione definisce attributi predefiniti per questo nome di elemento, verranno assegnati tali attributi.
I nodi di attributo specificati dell'elemento di origine vengono importati e i nodi generati XmlAttribute vengono collegati all'oggetto generato XmlElement.

Nota: gli attributi predefiniti non vengono copiati. Se il documento verso il quale avviene l'importazione definisce attributi predefiniti per questo nome di elemento, verranno assegnati tali attributi.
EntityReference Poiché i documenti di origine e di destinazione potrebbero avere le entità definite in modo diverso, questo metodo copia solo il XmlEntityReference nodo. Il testo di sostituzione non viene incluso. Se nel documento di destinazione l'entità è definita, viene assegnato il suo valore. Poiché i documenti di origine e di destinazione potrebbero avere le entità definite in modo diverso, questo metodo copia solo il XmlEntityReference nodo. Il testo di sostituzione non viene incluso. Se nel documento di destinazione l'entità è definita, viene assegnato il suo valore.
ProcessingInstruction Copia il valore di destinazione e dei dati dal nodo importato. Copia il valore di destinazione e dei dati dal nodo importato.
Testo Copia il nodo, compresi i dati. Copia il nodo, compresi i dati.
SignificantWhitespace Copia il nodo, compresi i dati. Copia il nodo, compresi i dati.
Spazio vuoto Copia il nodo, compresi i dati. Copia il nodo, compresi i dati.
XmlDeclaration Copia il valore di destinazione e dei dati dal nodo importato. Copia il valore di destinazione e dei dati dal nodo importato.
Tutti gli altri tipi di nodo. Questi nodi non possono essere importati. Questi nodi non possono essere importati.

*Anche se è possibile importare nodi DocumentType, un documento può avere un solo DocumentType. Se il documento dispone attualmente di un nodo DocumentType, è necessario rimuoverlo prima di aggiungerne uno nuovo.

Si applica a