將現有節點從一個文件複製到另一個文件
更新: November 2007
ImportNode 方法是一種機制,藉由這個機制,節點或整個節點樹狀子目錄會從一個 XmlDocument 複製到另一個。從呼叫傳回的節點是來自來源文件的節點複本,包括屬性值、節點名稱、節點型別和所有與命名空間相關的屬性,例如前置詞、區域名稱和命名空間統一資源識別元 (URI)。來源文件不會變更。在匯入節點之後,您仍然必須使用用於插入節點的其中一種方法將它加入至樹狀結構。
當節點附加於它的新文件時,新文件即擁有節點。原因是在建立時,每個節點都會有自己的文件,即使節點是建立在不同的文件片段中也一樣。這是 XML 文件物件模型 (DOM) 的必要需求,XmlDocument 類別上的原廠建立設計會加以強制執行。例如,CreateElement 即為建立新節點的方式之一。
根據匯入節點的節點型別和 deep 參數的值,其他的資訊會適當的複製。若 XML 或 HTML 來源的片段是從某份文件複製到另一份文件,則這個方法會嘗試反映預期的行為,這表示對於 XML,這兩份文件可能具有不同的文件類型定義 (DTD)。
下列表格說明可以匯入之每種節點型別的特定行為。
節點型別 |
deep 參數為 true |
deep 參數為 false |
||||
---|---|---|---|---|---|---|
XmlAttribute |
XmlAttribute.Specified 屬性在 XmlAttribute 上是設為 true。來源 XmlAttribute 的子代會遞迴匯入,而且產生的節點會重組以形成對應的樹狀子目錄。 |
deep 參數不會套用至 XmlAttribute 節點,因為它們在匯入時一定會帶著它們的子節點。 |
||||
XmlCDataSection |
複製節點,包含其資料。 |
複製節點,包含其資料。 |
||||
XmlComment |
複製節點,包含其資料。 |
複製節點,包含其資料。 |
||||
XmlDocumentFragment |
來源節點的子代會遞迴匯入,而且產生的節點會重組以形成對應的樹狀子目錄。 |
會建立空白的 XmlDocumentFragment。 |
||||
XmlDocumentType |
複製節點,包含其 data.* |
複製節點,包含其 data.* |
||||
XmlElement |
來源項目的子代會遞迴匯入,而且產生的節點會重組以形成對應的樹狀子目錄。
|
來源項目的指定屬性節點會匯入,而且產生的 XmlAttribute 節點會附加至新項目。不會複製子代節點。
|
||||
XmlEntityReference |
因為來源和目的文件可以擁有定義不同的實體,這個方法只會複製 XmlEntityReference 節點。不包括取代文字。如果目的文件有定義的實體,就會指派它的值。 |
因為來源和目的文件可以擁有定義不同的實體,這個方法只會複製 XmlEntityReference 節點。不包括取代文字。如果目的文件有定義的實體,就會指派它的值。 |
||||
XmlProcessingInstruction |
從匯入的節點複製目標和資料值。 |
從匯入的節點複製目標和資料值。 |
||||
XmlText |
複製節點,包含其資料。 |
複製節點,包含其資料。 |
||||
XmlSignificantWhitespace |
複製節點,包含其資料。 |
複製節點,包含其資料。 |
||||
XmlWhitespace |
複製節點,包含其資料。 |
複製節點,包含其資料。 |
||||
XmlDeclaration |
從匯入的節點複製目標和資料值。 |
從匯入的節點複製目標和資料值。 |
||||
其他所有的節點型別 |
這些節點型別不會匯入。 |
這些節點型別不會匯入。 |
注意事項: |
---|
雖然 DocumentType 節點可以匯入,但是一份文件只能有一個 DocumentType。因此,當您匯入文件型別之後,在將它插入樹狀結構之前,您必須確定文件中有文件型別。如需移除節點的資訊,請參閱從 XML 文件移除節點、內容和值。 |