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

Zaimportowany XmlNodeelement .

Wyjątki

Nie można zaimportować typu węzła.

Przykłady

Poniższy przykład importuje węzeł książki z drugiego dokumentu XML do oryginalnego dokumentu XML.

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 dokumentu importu 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 innego (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 Specifiedtrue na wartość XmlAttributedla wygenerowanego elementu . Elementy potomne ź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 niosą ze sobą swoje elementy podrzędne podczas importowania.
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.
Typ dokumentu Kopiuje węzeł, w tym jego dane.* Kopiuje węzeł, w tym jego dane.*
Składnik Elementy potomne elementu źródłowego i jego określonych węzłów atrybutów są rekursywnie importowane, a wynikowe węzły są ponownie zmontowane 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, zostaną one przypisane.
Określone węzły atrybutów elementu źródłowego są importowane, a wygenerowane węzły są dołączone do wygenerowanego XmlAttributeXmlElementelementu .

Uwaga: Atrybuty domyślne nie są kopiowane. Jeśli dokument importowany do definiuje atrybuty domyślne dla tej nazwy elementu, zostaną one przypisane.
EntityReference Ponieważ dokumenty źródłowe i docelowe mogą mieć zdefiniowane inaczej jednostki, ta metoda kopiuje XmlEntityReference tylko węzeł. Tekst zastępczy nie jest dołączony. Jeśli dokument docelowy ma zdefiniowaną jednostkę, zostanie przypisana jego wartość. Ponieważ dokumenty źródłowe i docelowe mogą mieć zdefiniowane inaczej jednostki, ta metoda kopiuje XmlEntityReference tylko węzeł. Tekst zastępczy nie jest dołączony. Jeśli dokument docelowy ma zdefiniowaną jednostkę, zostanie przypisana jego wartość.
Instrukcja przetwarzania 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 Biała Przestrzeń 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.
Deklaracja XML 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.

*Mimo że można zaimportować węzły DocumentType, dokument może mieć tylko jeden typ Dokumentu. Jeśli dokument ma obecnie węzeł DocumentType, należy go usunąć przed dodaniem nowego.

Dotyczy