Partager via


XmlDocument.ImportNode(XmlNode, Boolean) Méthode

Définition

Importe un nœud d'un autre document vers le document actif.

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

Paramètres

node
XmlNode

Nœud importé.

deep
Boolean

true pour réaliser un clone complet ; sinon, false.

Retours

XmlNode

L'élément XmlNode importé.

Exceptions

Appeler cette méthode sur un type de nœud qui ne peut pas être importé.

Exemples

L’exemple suivant importe un nœud de livre à partir d’un deuxième document XML dans le document XML d’origine.

#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

L’exemple utilise le fichier, books.xmlcomme entrée.

<?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>

Remarques

Le nœud retourné n’a aucun parent. Le nœud source n’est pas modifié ou supprimé du document d’origine; ImportNode crée une copie du nœud source.

L’importation d’un nœud crée un XmlNode objet appartenant au document d’importation, avec Name et NodeType identique au nœud source. Le nouvel objet a également les attributs liés aux espaces de noms (Prefix, LocalNameet NamespaceURI).

Selon le type de nœud du nœud importé et la valeur du deep paramètre, des informations supplémentaires sont copiées selon les besoins. Cette méthode tente de mettre en miroir le comportement attendu si un fragment de source XML ou HTML a été copié d’un document à un autre (en reconnaissant que, dans le cas XML, les deux documents pourraient avoir des DTD différents).

Le tableau suivant décrit le comportement spécifique pour chaque XmlNodeType.

XmlNodeType ImportNode(true) ImportNode(false)
Attribut La Specified propriété est définie true sur la valeur générée XmlAttribute. Les descendants de la source XmlAttribute sont importés de manière récursive et les nœuds résultants se réassemblent pour former la sous-arborescence correspondante. Le deep paramètre ne s’applique pas aux XmlAttribute nœuds ; ils transportent toujours leurs enfants avec eux lorsqu’ils sont importés.
CData Copie le nœud avec ses données. Copie le nœud avec ses données.
Commentaire Copie le nœud avec ses données. Copie le nœud avec ses données.
DocumentFragment Les descendants du nœud source sont importés de manière récursive et les nœuds obtenus sont réassemblés pour former le sous-arbre correspondant. Un vide XmlDocumentFragment est généré.
DocumentType ; Copie le nœud avec ses données.* Copie le nœud avec ses données.*
Élément Les descendants de l’élément source et de ses nœuds d’attribut spécifiés sont importés de manière récursive et les nœuds résultants réassemblent pour former la sous-arborescence correspondante.

Remarque : Les attributs par défaut ne sont pas copiés. Si le document destinataire de l'importation définit des attributs par défaut pour ce nom d'élément, ces attributs sont assignés.
Les nœuds d’attribut spécifiés de l’élément source sont importés et les nœuds générés XmlAttribute sont attachés à l’élément généré XmlElement.

Remarque : Les attributs par défaut ne sont pas copiés. Si le document destinataire de l'importation définit des attributs par défaut pour ce nom d'élément, ces attributs sont assignés.
EntityReference Étant donné que les documents source et de destination peuvent avoir les entités définies différemment, cette méthode copie uniquement le XmlEntityReference nœud. Le texte de remplacement n'est pas inclus. Si l'entité est définie dans le document de destination, sa valeur est assignée. Étant donné que les documents source et de destination peuvent avoir les entités définies différemment, cette méthode copie uniquement le XmlEntityReference nœud. Le texte de remplacement n'est pas inclus. Si l'entité est définie dans le document de destination, sa valeur est assignée.
ProcessingInstruction ; Copie la cible et la valeur de données à partir du nœud importé. Copie la cible et la valeur de données à partir du nœud importé.
Texte Copie le nœud avec ses données. Copie le nœud avec ses données.
SignificantWhitespace Copie le nœud avec ses données. Copie le nœud avec ses données.
Espace blanc Copie le nœud avec ses données. Copie le nœud avec ses données.
XmlDeclaration Copie la cible et la valeur de données à partir du nœud importé. Copie la cible et la valeur de données à partir du nœud importé.
Tous les autres types de nœuds. Ces types de nœuds ne peuvent pas être importés. Ces types de nœuds ne peuvent pas être importés.

*Bien que les nœuds DocumentType puissent être importés, un document ne peut avoir qu’un seul DocumentType. Si le document possède actuellement un nœud DocumentType, il doit être supprimé avant d’en ajouter un nouveau.

S’applique à