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, его необходимо удалить перед добавлением нового.