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