Sdílet prostřednictvím


XmlDocument.ImportNode(XmlNode, Boolean) Metoda

Definice

Importuje uzel z jiného dokumentu do aktuálního 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

Uzel, který se importuje.

deep
Boolean

true k provedení hlubokého klonu; falsev opačném případě .

Návraty

XmlNode

Importovaný XmlNode.

Výjimky

Volání této metody na typ uzlu, který nelze importovat.

Příklady

Následující příklad naimportuje uzel knihy z druhého dokumentu XML do původního 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

Příklad používá soubor , books.xmljako vstup.

<?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>

Poznámky

Vrácený uzel nemá žádnou nadřazenou položku. Zdrojový uzel není změněn nebo odebrán z původního dokumentu; ImportNode vytvoří kopii zdrojového uzlu.

Import uzlu vytvoří XmlNode objekt vlastněný importovaným dokumentem, který je Name shodný NodeType se zdrojovým uzlem. Nový objekt má také atributy související s obory názvů (Prefix, LocalNamea NamespaceURI).

V závislosti na typu uzlu importovaného uzlu a hodnotě parametru deep se podle potřeby zkopírují další informace. Tato metoda se pokusí zrcadlit očekávané chování, pokud se zkopíroval fragment kódu XML nebo zdroj HTML z jednoho dokumentu do druhého (rozpoznává, že v případě XML můžou mít tyto dva dokumenty různé DTD).

Následující tabulka popisuje konkrétní chování každého XmlNodeType.

Xmlnodetype ImportNode(true) ImportNode(false)
Atribut Vlastnost Specified je nastavena na true vygenerovaný XmlAttribute. Potomci zdroje XmlAttribute se rekurzivně importují a výsledné uzly se znovu sestaví tak, aby vytvořily odpovídající podstrom. Parametr deep se nevztahuje na XmlAttribute uzly. Při importu vždy s sebou nesou podřízené položky.
Cdata Zkopíruje uzel, včetně jeho dat. Zkopíruje uzel, včetně jeho dat.
Komentář Zkopíruje uzel, včetně jeho dat. Zkopíruje uzel, včetně jeho dat.
Documentfragment Potomci zdrojového uzlu se rekurzivně naimportují a výsledné uzly se znovu sestaví tak, aby vytvořily odpovídající podstrom. Vygeneruje se prázdný XmlDocumentFragment .
Documenttype Zkopíruje uzel, včetně jeho dat.* Zkopíruje uzel, včetně jeho dat.*
Prvek Potomci zdrojového prvku a jeho zadaných uzlů atributů se rekurzivně importují a výsledné uzly se znovu sestaví tak, aby vytvořily odpovídající podstrom.

Poznámka: Výchozí atributy se nekopírují. Pokud dokument importovaný do definice výchozích atributů pro tento název elementu, jsou přiřazeny.
Zadané uzly atributů zdrojového prvku se naimportují a vygenerované XmlAttribute uzly jsou připojené k vygenerovanému XmlElementprvku .

Poznámka: Výchozí atributy se nekopírují. Pokud dokument importovaný do definice výchozích atributů pro tento název elementu, jsou přiřazeny.
EntityReference Vzhledem k tomu, že zdrojové a cílové dokumenty mohou mít entity definované odlišně, tato metoda zkopíruje XmlEntityReference pouze uzel. Náhradní text není zahrnut. Pokud má cílový dokument definovanou entitu, přiřadí se její hodnota. Vzhledem k tomu, že zdrojové a cílové dokumenty mohou mít entity definované odlišně, tato metoda zkopíruje XmlEntityReference pouze uzel. Náhradní text není zahrnut. Pokud má cílový dokument definovanou entitu, přiřadí se její hodnota.
Processinginstruction Zkopíruje cílovou hodnotu a hodnotu dat z importovaného uzlu. Zkopíruje cílovou hodnotu a hodnotu dat z importovaného uzlu.
Text Zkopíruje uzel, včetně jeho dat. Zkopíruje uzel, včetně jeho dat.
SignificantWhitespace Zkopíruje uzel, včetně jeho dat. Zkopíruje uzel, včetně jeho dat.
Prázdné znaky Zkopíruje uzel, včetně jeho dat. Zkopíruje uzel, včetně jeho dat.
Xmldeclaration Zkopíruje cílovou hodnotu a hodnotu dat z importovaného uzlu. Zkopíruje cílovou hodnotu a hodnotu dat z importovaného uzlu.
Všechny ostatní typy uzlů. Tyto typy uzlů nelze importovat. Tyto typy uzlů nelze importovat.

*I když je možné importovat uzly DocumentType, dokument může mít pouze jeden DocumentType. Pokud dokument aktuálně obsahuje uzel DocumentType, je nutné ho před přidáním nového odebrat.

Platí pro