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

Определение

Импортирует в текущий документ узел из другого документа.Imports a node from another document to the current document.

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

Импортируемый узел.The node being imported.

deep
Boolean

Значение true — выполняется полное точное клонирование; в противном случае — false.true to perform a deep clone; otherwise, false.

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

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

Исключения

Вызов этого метода для типа узла, который не может быть импортирован.Calling this method on a node type which cannot be imported.

Примеры

В следующем примере выполняется импорт узла книги из второго XML-документа в исходный XML-документ.The following example imports a book node from a second XML document into the original XML document.

#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.The example uses the file, books.xml, as input.

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

Комментарии

Возвращаемый узел не имеет родителя.The returned node has no parent. Исходный узел не был изменен или удален из исходного документа. ImportNode создает копию исходного узла.The source node is not altered or removed from the original document; ImportNode creates a copy of the source node.

При импорте узла создается объект XmlNode, принадлежащий импортируемому документу, с Name и NodeType идентичен исходному узлу.Importing a node creates an XmlNode object owned by the importing document, with Name and NodeType identical to the source node. Новый объект также содержит атрибуты, связанные с пространствами имен (Prefix, LocalNameи NamespaceURI).The new object also has the attributes related to namespaces (Prefix, LocalName, and NamespaceURI).

В зависимости от типа импортируемого узла и значения параметра deep дополнительные сведения копируются соответствующим образом.Depending on the node type of the imported node and the value of the deep parameter, additional information is copied as appropriate. Этот метод пытается отразить поведение, ожидаемое, если фрагмент кода XML или HTML был скопирован из одного документа в другой (распознать, что в XML-сценарии два документа могут иметь разные DTD).This method attempts to mirror the behavior expected if a fragment of XML or HTML source was copied from one document to another (recognizing that, in the XML case, the two documents could have different DTDs).

В следующей таблице описаны конкретные действия для каждого XmlNodeType.The following table describes the specific behavior for each XmlNodeType.

Тип узла XMLXmlNodeType Импортноде (true)ImportNode(true) Импортноде (false)ImportNode(false)
АтрибутAttribute В созданном XmlAttributeсвойство Specified имеет значение true.The Specified property is set to true on the generated XmlAttribute. Потомки исходного XmlAttribute рекурсивно импортируются, а полученные узлы собираются для формирования соответствующего поддерева.The descendants of the source XmlAttribute are recursively imported and the resulting nodes reassembled to form the corresponding subtree. Параметр deep не применяется к узлам XmlAttribute; они всегда будут содержать их дочерние элементы при импорте.The deep parameter does not apply to XmlAttribute nodes; they always carry their children with them when imported.
КорпорацияCData Копирует узел вместе с данными.Copies the node, including its data. Копирует узел вместе с данными.Copies the node, including its data.
Добавление примечанийComment Копирует узел вместе с данными.Copies the node, including its data. Копирует узел вместе с данными.Copies the node, including its data.
DocumentFragmentDocumentFragment Потомки исходного узла рекурсивно импортируются, а результирующие узлы создаются заново и составляют соответствующее поддерево.The descendants of the source node are recursively imported and the resulting nodes reassembled to form the corresponding subtree. Создается пустой XmlDocumentFragment.An empty XmlDocumentFragment is generated.
DocumentType;DocumentType Копирует узел вместе с данными.*Copies the node, including its data.* Копирует узел вместе с данными.*Copies the node, including its data.*
ЭлементElement Потомки исходного элемента и его заданных узлов атрибутов рекурсивно импортируются, а полученные узлы собираются для формирования соответствующего поддерева.The descendants of the source element and its specified attribute nodes are recursively imported and the resulting nodes reassembled to form the corresponding subtree.

Примечание. атрибуты по умолчанию не копируются.Note: Default attributes are not copied. Если документ, в который выполняется импорт, определяет атрибуты по умолчанию для данного имени элемента, они назначаются.If the document being imported into defines default attributes for this element name, those are assigned.
Импортируются указанные узлы атрибута исходного элемента, а созданные узлы XmlAttribute присоединяются к созданной XmlElement.Specified attribute nodes of the source element are imported, and the generated XmlAttribute nodes are attached to the generated XmlElement.

Примечание. атрибуты по умолчанию не копируются.Note: Default attributes are not copied. Если документ, в который выполняется импорт, определяет атрибуты по умолчанию для данного имени элемента, они назначаются.If the document being imported into defines default attributes for this element name, those are assigned.
EntityReferenceEntityReference Так как в исходном и целевом документах могут быть определены сущности по-разному, этот метод копирует только XmlEntityReference узел.Because the source and destination documents could have the entities defined differently, this method only copies the XmlEntityReference node. Текст замены не включается.The replacement text is not included. Если в документе назначения определена сущность, ей назначается значение.If the destination document has the entity defined, its value is assigned. Так как в исходном и целевом документах могут быть определены сущности по-разному, этот метод копирует только XmlEntityReference узел.Because the source and destination documents could have the entities defined differently, this method only copies the XmlEntityReference node. Текст замены не включается.The replacement text is not included. Если в документе назначения определена сущность, ей назначается значение.If the destination document has the entity defined, its value is assigned.
ProcessingInstruction;ProcessingInstruction Копирует цель и значение данных из импортируемого узла.Copies the target and data value from the imported node. Копирует цель и значение данных из импортируемого узла.Copies the target and data value from the imported node.
TextText Копирует узел вместе с данными.Copies the node, including its data. Копирует узел вместе с данными.Copies the node, including its data.
SignificantWhitespaceSignificantWhitespace Копирует узел вместе с данными.Copies the node, including its data. Копирует узел вместе с данными.Copies the node, including its data.
WhitespaceWhitespace Копирует узел вместе с данными.Copies the node, including its data. Копирует узел вместе с данными.Copies the node, including its data.
XmlDeclarationXmlDeclaration Копирует цель и значение данных из импортируемого узла.Copies the target and data value from the imported node. Копирует цель и значение данных из импортируемого узла.Copies the target and data value from the imported node.
Все остальные типы узлов.All other node types. Эти типы узлов импортировать нельзя.These node types cannot be imported. Эти типы узлов импортировать нельзя.These node types cannot be imported.

* Хотя узлы DocumentType могут быть импортированы, документ может иметь только один объект DocumentType.*Although DocumentType nodes can be imported, a document can only have one DocumentType. Если документ в настоящее время содержит узел Документипе, его необходимо удалить перед добавлением нового.If the document currently has a DocumenType node, it must be removed before adding a new one.

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