Udostępnij za pośrednictwem


XmlDocument.ImportNode(XmlNode, Boolean) Metoda

Definicja

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

XmlNode

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.xmljako 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.

Dotyczy