XmlDocument.ImportNode(XmlNode, Boolean) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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
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.