Поделиться через


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.

Исключения

Тип узла не может быть импортирован.

Примеры

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

В этом примере файл 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.

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

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

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

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

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