XmlDocument.ImportNode(XmlNode, Boolean) Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
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.xml
comme 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.