XmlDocument.ImportNode(XmlNode, Boolean) Метод

Определение

Импортирует в текущий документ узел из другого документа.

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

Параметры

node
XmlNode

Импортируемый узел.

deep
Boolean

Значение true — выполняется полное точное клонирование; в противном случае — false.

Возвращаемое значение

XmlNode

Импортированный XmlNode.

Исключения

Вызов этого метода для типа узла, который не может быть импортирован.

Примеры

В следующем примере узел книги импортируется из второго XML-документа в исходный 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

В этом примере в качестве входных данных используется файл books.xml.

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

Комментарии

Возвращаемый узел не имеет родительского элемента. Исходный узел не изменяется или не удаляется из исходного документа; ImportNode создает копию исходного узла.

При импорте узла создается объект, принадлежащий XmlNode импортируемой документации, с Name исходным узлом и NodeType идентичным узлу-источнику. Новый объект также имеет атрибуты, связанные с пространствами имен (Prefix, LocalNameи NamespaceURI).

В зависимости от типа узла импортированного узла и значения deep параметра дополнительные сведения копируются соответствующим образом. Этот метод пытается зеркально отражать ожидаемое поведение, если фрагмент XML или HTML-источника был скопирован из одного документа в другой (признавая, что в XML-случае два документа могут иметь разные DTD).

В следующей таблице описано конкретное поведение для каждого из них XmlNodeType.

Тип узла XML ImportNode(true) ImportNode(false)
Атрибут Для Specified созданного XmlAttributeсвойства задается значение true . Потомки источника XmlAttribute рекурсивно импортируются и результирующая сборка узлов для формирования соответствующего поддеревого дерева. Параметр deep не применяется к XmlAttribute узлам; они всегда несут их дочерние элементы при импорте.
CData Копирует узел вместе с данными. Копирует узел вместе с данными.
Комментировать Копирует узел вместе с данными. Копирует узел вместе с данными.
DocumentFragment Потомки исходного узла рекурсивно импортируются, а результирующие узлы создаются заново и составляют соответствующее поддерево. Создается пустое XmlDocumentFragment значение.
DocumentType; Копирует узел вместе с данными.* Копирует узел вместе с данными.*
Элемент Потомки исходного элемента и его указанных узлов атрибутов рекурсивно импортируются и результирующая сборка узлов для формирования соответствующего поддеревого дерева.

Примечание. Атрибуты по умолчанию не копируются. Если документ, в который выполняется импорт, определяет атрибуты по умолчанию для данного имени элемента, они назначаются.
Импортируются указанные узлы атрибутов исходного элемента, а созданные XmlAttribute узлы присоединяются к созданному.XmlElement

Примечание. Атрибуты по умолчанию не копируются. Если документ, в который выполняется импорт, определяет атрибуты по умолчанию для данного имени элемента, они назначаются.
EntityReference Так как исходные и целевые документы могут иметь сущности, определенные по-разному, этот метод копирует XmlEntityReference только узел. Текст замены не включается. Если в документе назначения определена сущность, ей назначается значение. Так как исходные и целевые документы могут иметь сущности, определенные по-разному, этот метод копирует XmlEntityReference только узел. Текст замены не включается. Если в документе назначения определена сущность, ей назначается значение.
ProcessingInstruction; Копирует цель и значение данных из импортируемого узла. Копирует цель и значение данных из импортируемого узла.
Текст Копирует узел вместе с данными. Копирует узел вместе с данными.
SignificantWhitespace Копирует узел вместе с данными. Копирует узел вместе с данными.
Пробелы Копирует узел вместе с данными. Копирует узел вместе с данными.
XmlDeclaration Копирует цель и значение данных из импортируемого узла. Копирует цель и значение данных из импортируемого узла.
Все остальные типы узлов. Эти типы узлов импортировать нельзя. Эти типы узлов импортировать нельзя.

*Хотя узлы DocumentType можно импортировать, документ может иметь только один DocumentType. Если у документа есть узел DocumentType, его необходимо удалить перед добавлением нового.

Применяется к