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 effectuer un clone profond ; sinon, false.

Retours

Importé XmlNode.

Exceptions

Le type de nœud 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;
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 pas de 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).

En fonction du type de nœud du nœud importé et de 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 (reconnaissant que, dans le cas XML, les deux documents pouvaient avoir des DTD différents).

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

XmlNodeType ImportNode(true) ImportNode(false)
Caractéristique La Specified propriété est définie true sur le fichier généré XmlAttribute. Les descendants de la source XmlAttribute sont importés de manière récursive et les nœuds résultants sont réassembtés 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, y compris ses données. Copie le nœud, y compris ses données.
Commentaire Copie le nœud, y compris ses données. Copie le nœud, y compris ses données.
DocumentFragment Les descendants du nœud source sont importés de manière récursive et les nœuds résultants sont réassembtés pour former la sous-arborescence correspondante. Un vide XmlDocumentFragment est généré.
DocumentType Copie le nœud, y compris ses données.* Copie le nœud, y compris 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 importé dans définit des attributs par défaut pour ce nom d’élément, ceux-ci sont affecté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 importé dans définit des attributs par défaut pour ce nom d’élément, ceux-ci sont affectés.
Référence d'entité É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 le document de destination a l’entité définie, sa valeur est affecté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 le document de destination a l’entité définie, sa valeur est affectée.
Instruction de traitement Copie la cible et la valeur de données du nœud importé. Copie la cible et la valeur de données du nœud importé.
Texte Copie le nœud, y compris ses données. Copie le nœud, y compris ses données.
SignificantWhitespace Copie le nœud, y compris ses données. Copie le nœud, y compris ses données.
Espace blanc Copie le nœud, y compris ses données. Copie le nœud, y compris ses données.
Déclaration XML Copie la cible et la valeur de données du nœud importé. Copie la cible et la valeur de données 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 à