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 는 원본 노드의 복사본을 만듭니다.

노드를 가져오면 원본 노드와 Name 동일하고 NodeType 가져오는 문서가 소유한 개체가 만들어집니다XmlNode. 새 개체에는 네임스페이스(PrefixLocalName)와 NamespaceURI관련된 특성도 있습니다.

가져온 노드의 노드 형식 및 매개 변수 값에 deep 따라 추가 정보가 적절하게 복사됩니다. 이 메서드는 XML 또는 HTML 원본 조각이 한 문서에서 다른 문서로 복사된 경우 예상되는 동작을 미러링하려고 시도합니다(XML의 경우 두 문서에 다른 DTD가 있을 수 있음을 인식).

다음 표에서는 각각 XmlNodeType에 대한 특정 동작을 설명합니다.

XmlNodeType ImportNode(true) ImportNode(false)
attribute 속성이 Specified 생성된 .에 대해 설정 true 됩니다 XmlAttribute. 원본 XmlAttribute 의 하위 항목은 재귀적으로 가져오고 결과 노드는 해당 하위 트리를 형성하기 위해 다시 조립됩니다. 매개 변수는 deep 노드에 XmlAttribute 적용되지 않습니다. 가져올 때 항상 자식을 가지고 다닙니다.
CData 해당 데이터를 포함하여 노드를 복사합니다. 해당 데이터를 포함하여 노드를 복사합니다.
의견 해당 데이터를 포함하여 노드를 복사합니다. 해당 데이터를 포함하여 노드를 복사합니다.
DocumentFragment 소스 노드의 하위 항목을 재귀적으로 가져오고 결과 노드를 다시 조합하여 해당하는 하위 트리를 구성합니다. XmlDocumentFragment 항목이 생성됩니다.
DocumentType 해당 데이터를 포함하여 노드를 복사합니다.* 해당 데이터를 포함하여 노드를 복사합니다.*
요소 원본 요소 및 지정된 특성 노드의 하위 항목을 재귀적으로 가져오고 결과 노드를 다시 어셈블하여 해당 하위 트리를 형성합니다.

참고: 기본 특성은 복사되지 않습니다. 가져오고 있는 문서에 이 요소 이름에 대한 기본 특성이 정의되어 있는 경우 이 특성이 할당됩니다.
원본 요소의 지정된 특성 노드를 가져오고 생성된 노드가 생성된 XmlAttribute XmlElement노드에 연결됩니다.

참고: 기본 특성은 복사되지 않습니다. 가져오고 있는 문서에 이 요소 이름에 대한 기본 특성이 정의되어 있는 경우 이 특성이 할당됩니다.
EntityReference 원본 및 대상 문서에는 엔터티가 다르게 정의되어 있을 수 있으므로 이 메서드는 노드만 복사합니다 XmlEntityReference . 대체 텍스트는 포함되지 않습니다. 대상 문서에 엔터티가 정의되어 있는 경우 해당 값이 할당됩니다. 원본 및 대상 문서에는 엔터티가 다르게 정의되어 있을 수 있으므로 이 메서드는 노드만 복사합니다 XmlEntityReference . 대체 텍스트는 포함되지 않습니다. 대상 문서에 엔터티가 정의되어 있는 경우 해당 값이 할당됩니다.
ProcessingInstruction 가져온 노드에서 대상과 데이터 값을 복사합니다. 가져온 노드에서 대상과 데이터 값을 복사합니다.
텍스트 해당 데이터를 포함하여 노드를 복사합니다. 해당 데이터를 포함하여 노드를 복사합니다.
SignificantWhitespace 해당 데이터를 포함하여 노드를 복사합니다. 해당 데이터를 포함하여 노드를 복사합니다.
공백 해당 데이터를 포함하여 노드를 복사합니다. 해당 데이터를 포함하여 노드를 복사합니다.
XmlDeclaration 가져온 노드에서 대상과 데이터 값을 복사합니다. 가져온 노드에서 대상과 데이터 값을 복사합니다.
다른 모든 노드 형식입니다. 이 노드 형식은 가져올 수 없습니다. 이 노드 형식은 가져올 수 없습니다.

*DocumentType 노드를 가져올 수 있지만 문서에는 DocumentType이 하나만 있을 수 있습니다. 문서에 현재 DocumentType 노드가 있는 경우 새 노드를 추가하기 전에 제거해야 합니다.

적용 대상