共用方式為


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由匯入文件擁有的物件,NameNodeType且與來源節點相同。 新物件同時擁有與命名空間相關的屬性(Prefix, , LocalNameNamespaceURI)。

根據匯入節點的節點類型及參數值 deep ,會根據適當地複製額外資訊。 此方法試圖鏡像當 XML 或 HTML 原始碼片段從一份文件複製到另一份文件時所預期的行為(因為在 XML 情況下,兩份文件可能有不同的 DTD)。

下表描述了每個 XmlNodeType的具體行為。

XmlNodeType ImportNode(true) ImportNode(false)
Attribute Specified屬性在生成XmlAttribute的 上設定為 。true 來源的後代 XmlAttribute 會遞迴匯入,並重新組合產生的節點以形成對應的子樹。 deep 參數不適用於 XmlAttribute 節點;它們在匯入時總是攜帶子節點。
CData 複製節點,包括其數據。 複製節點,包括其數據。
註解 複製節點,包括其數據。 複製節點,包括其數據。
文件片段 來源節點的子系會以遞歸方式匯入,而產生的節點會重新組合成對應的子樹。 會產生一個空 XmlDocumentFragment 位。
文件類型 複製節點,包括其數據。* 複製節點,包括其數據。*
元素 來源元素及其指定屬性節點的後代會被遞迴匯入,並重新組合產生的節點形成對應的子樹。

注意:預設屬性不會被複製。 如果被匯入的文件定義此元素名稱的預設屬性,則會指派這些屬性。
將來源元素指定的屬性節點匯入,並將產生 XmlAttribute 的節點附加到生成 XmlElement的 。

注意:預設屬性不會被複製。 如果被匯入的文件定義此元素名稱的預設屬性,則會指派這些屬性。
EntityReference 由於來源文件與目的文件的實體定義可能不同,此方法僅複製 XmlEntityReference 節點。 不包含替代文字。 如果目的地檔已定義實體,則會指派其值。 由於來源文件與目的文件的實體定義可能不同,此方法僅複製 XmlEntityReference 節點。 不包含替代文字。 如果目的地檔已定義實體,則會指派其值。
處理指令 從匯入的節點複製目標和數據值。 從匯入的節點複製目標和數據值。
文字 複製節點,包括其數據。 複製節點,包括其數據。
重要空白 複製節點,包括其數據。 複製節點,包括其數據。
空白 複製節點,包括其數據。 複製節點,包括其數據。
XML聲明 從匯入的節點複製目標和數據值。 從匯入的節點複製目標和數據值。
所有其他節點類型。 無法匯入這些節點類型。 無法匯入這些節點類型。

*雖然 DocumentType 節點可以匯入,但文件只能有一個 DocumentType。 如果文件目前有 DocumentType 節點,必須先移除該節點才能新增。

適用於