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;
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, , LocalName和 NamespaceURI)。
根據匯入節點的節點類型及參數值 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 節點,必須先移除該節點才能新增。