XmlDocument.ImportNode(XmlNode, Boolean) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Importuje węzeł z innego dokumentu do bieżącego dokumentu.
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
Parametry
- node
- XmlNode
Importowany węzeł.
- deep
- Boolean
true
do wykonania głębokiego klonowania; w przeciwnym razie , false
.
Zwraca
Zaimportowany XmlNodeelement .
Wyjątki
Wywoływanie tej metody w typie węzła, którego nie można zaimportować.
Przykłady
Poniższy przykład importuje węzeł książki z drugiego dokumentu XML do oryginalnego dokumentu XML.
#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
W przykładzie użyto pliku , books.xml
jako danych wejściowych.
<?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>
Uwagi
Zwrócony węzeł nie ma elementu nadrzędnego. Węzeł źródłowy nie jest zmieniany ani usuwany z oryginalnego dokumentu; ImportNode
tworzy kopię węzła źródłowego.
Importowanie węzła powoduje utworzenie XmlNode
obiektu należącego do importowania dokumentu z węzłem Name źródłowym i NodeType identycznym z węzłem źródłowym. Nowy obiekt ma również atrybuty związane z przestrzeniami nazw (Prefix, LocalName, i NamespaceURI).
W zależności od typu węzła zaimportowanego węzła i wartości parametru deep
dodatkowe informacje są kopiowane zgodnie z potrzebami. Ta metoda próbuje zdublować zachowanie oczekiwane, jeśli fragment kodu XML lub źródła HTML został skopiowany z jednego dokumentu do drugiego (rozpoznając, że w przypadku XML dwa dokumenty mogą mieć różne jednostki DTD).
W poniższej tabeli opisano konkretne zachowanie dla każdego XmlNodeTypeelementu .
XmlNodeType | ImportNode(true) | ImportNode(false) |
---|---|---|
Atrybut | Właściwość jest ustawiona Specified true na wartość dla wygenerowanego XmlAttributeelementu . Elementy podrzędne źródła XmlAttribute są rekursywnie importowane, a wynikowe węzły są ponownie zmontowane w celu utworzenia odpowiedniego poddrzewa. |
Parametr deep nie ma zastosowania do XmlAttribute węzłów; zawsze przenoszą ze sobą swoje elementy podrzędne po zaimportowaniu. |
Cdata | Kopiuje węzeł, w tym jego dane. | Kopiuje węzeł, w tym jego dane. |
Komentarz | Kopiuje węzeł, w tym jego dane. | Kopiuje węzeł, w tym jego dane. |
Documentfragment | Elementy podrzędne węzła źródłowego są rekursywnie importowane, a wynikowe węzły są ponownie zmontowane w celu utworzenia odpowiedniego poddrzewa. | Pusta XmlDocumentFragment jest generowana. |
Documenttype | Kopiuje węzeł, w tym jego dane.* | Kopiuje węzeł, w tym jego dane.* |
Element | Elementy podrzędne elementu źródłowego i jego określone węzły atrybutu są rekursywnie importowane, a wynikowe węzły są ponownie rozsyłane w celu utworzenia odpowiedniego poddrzewa. Uwaga: atrybuty domyślne nie są kopiowane. Jeśli dokument importowany do definiuje atrybuty domyślne dla tej nazwy elementu, są one przypisywane. |
Określone węzły atrybutów elementu źródłowego są importowane, a wygenerowane XmlAttribute węzły są dołączone do wygenerowanego XmlElementelementu .Uwaga: atrybuty domyślne nie są kopiowane. Jeśli dokument importowany do definiuje atrybuty domyślne dla tej nazwy elementu, są one przypisywane. |
Odwołanie do jednostki | Ponieważ dokumenty źródłowe i docelowe mogą mieć zdefiniowane jednostki inaczej, ta metoda kopiuje XmlEntityReference tylko węzeł. Tekst zastępczy nie jest uwzględniony. Jeśli dokument docelowy ma zdefiniowaną jednostkę, zostanie przypisana jej wartość. | Ponieważ dokumenty źródłowe i docelowe mogą mieć zdefiniowane jednostki inaczej, ta metoda kopiuje XmlEntityReference tylko węzeł. Tekst zastępczy nie jest uwzględniony. Jeśli dokument docelowy ma zdefiniowaną jednostkę, zostanie przypisana jej wartość. |
ProcessingInstruction | Kopiuje wartość docelową i dane z zaimportowanego węzła. | Kopiuje wartość docelową i dane z zaimportowanego węzła. |
Tekst | Kopiuje węzeł, w tym jego dane. | Kopiuje węzeł, w tym jego dane. |
Znacząca przestrzeńwhitespace | Kopiuje węzeł, w tym jego dane. | Kopiuje węzeł, w tym jego dane. |
Białe znaki | Kopiuje węzeł, w tym jego dane. | Kopiuje węzeł, w tym jego dane. |
Xmldeclaration | Kopiuje wartość docelową i dane z zaimportowanego węzła. | Kopiuje wartość docelową i dane z zaimportowanego węzła. |
Wszystkie inne typy węzłów. | Nie można zaimportować tych typów węzłów. | Nie można zaimportować tych typów węzłów. |
*Chociaż węzły DocumentType można zaimportować, dokument może mieć tylko jeden typ dokumentu. Jeśli dokument ma obecnie węzeł DocumentType, należy go usunąć przed dodaniem nowego.