XmlDocument.ImportNode(XmlNode, Boolean) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
다른 문서에서 현재 문서로 노드를 가져옵니다.
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
는 원본 노드의 복사본을 만듭니다.
노드를 가져오면 원본 노드와 Name 동일하고 NodeType 가져오는 문서가 소유한 개체가 만들어집니다XmlNode
. 새 개체에는 네임스페이스(Prefix및 LocalName)와 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 노드가 있는 경우 새 노드를 추가하기 전에 제거해야 합니다.