Kopírování existujících uzlů z jednoho dokumentu do jiného

Metoda ImportNode je mechanismus, pomocí kterého je uzel nebo celý podstrom uzlu zkopírován z jednoho XmlDocument do jiného. Uzel vrácený voláním je kopie uzlu ze zdrojového dokumentu, včetně hodnot atributů, názvu uzlu, typu uzlu a všech atributů souvisejících s oborem názvů, jako je předpona, místní název a identifikátor URI oboru názvů. Zdrojový dokument se nezmění. Po importu uzlu ho stále musíte přidat do stromu pomocí jedné z metod použitých k vložení uzlů.

Když je uzel připojený k novému dokumentu, nový dokument vlastní uzel. Důvodem je, že každý uzel při vytváření má vlastnící dokument, i když jsou uzly vytvořeny v samostatných fragmentech dokumentu. Jedná se o požadavek modelu DOM (Document Object Model) XML a je vynucen návrhem vytváření továrny ve třídě XmlDocument . Například CreateElement je jediný způsob, jak vytvořit nové uzly.

V závislosti na typu uzlu importovaného uzlu a hodnotě hloubkového parametru se podle potřeby zkopírují další informace. Tato metoda se pokusí zrcadlit očekávané chování v případě, že byl fragment xml nebo zdroje HTML zkopírován z jednoho dokumentu do druhého, přičemž při zohlednění skutečnosti, že pro XML můžou mít tyto dva dokumenty různé definice typu dokumentu (DTD).

Následující tabulka popisuje konkrétní chování jednotlivých typů uzlů, které je možné importovat.

Typ uzlu deep parameter is true deep parameter is false
XmlAttribute Hodnota je nastavena Specified na hodnotu true u atributu XmlAttribute. Potomci zdrojového XmlAttribute se rekurzivně importují a výsledné uzly se znovu sestaví, aby vytvořily odpovídající podstrom. Hluboký parametr se nevztahuje na uzly XmlAttribute, protože při importu vždy přenášejí své podřízené uzly.
XmlCDataSection Zkopíruje uzel včetně jeho dat. Zkopíruje uzel včetně jeho dat.
XmlComment Zkopíruje uzel včetně jeho dat. Zkopíruje uzel včetně jeho dat.
XmlDocumentFragment Potomky zdrojového uzlu se rekurzivně naimportují a výsledné uzly se znovu sestaví a vytvoří odpovídající podstrom. Vytvoří se prázdný XmlDocumentFragment .
XmlDocumentType Zkopíruje uzel včetně jeho dat.* Zkopíruje uzel včetně jeho dat.*
XmlElement Potomky zdrojového prvku se rekurzivně importují a výsledné uzly se znovu sestaví, aby vytvořily odpovídající podstrom. Poznámka: Výchozí atributy se nekopírují. Pokud dokument importovaný do definuje výchozí atributy pro tento název elementu, jsou přiřazeny. Zadané uzly atributů zdrojového elementu se importují a vygenerované uzly XmlAttribute jsou připojené k novému prvku. Potomky se nekopírují. Poznámka: Výchozí atributy se nekopírují. Pokud dokument importovaný do definuje výchozí atributy pro tento název elementu, jsou přiřazeny.
XmlEntityReference Vzhledem k tomu, že zdrojové a cílové dokumenty mohou mít entity definované odlišně, tato metoda zkopíruje pouze uzel XmlEntityReference . Náhradní text není zahrnut. Pokud má cílový dokument definovanou entitu, přiřadí se její hodnota. Vzhledem k tomu, že zdrojové a cílové dokumenty mohou mít entity definované odlišně, tato metoda zkopíruje pouze uzel XmlEntityReference . Náhradní text není zahrnut. Pokud má cílový dokument definovanou entitu, přiřadí se její hodnota.
XmlProcessingInstruction Zkopíruje cílovou hodnotu a hodnotu dat z importovaného uzlu. Zkopíruje cílovou hodnotu a hodnotu dat z importovaného uzlu.
Xmltext Zkopíruje uzel včetně jeho dat. Zkopíruje uzel včetně jeho dat.
XmlSignificantWhitespace Zkopíruje uzel včetně jeho dat. Zkopíruje uzel včetně jeho dat.
XmlWhitespace Zkopíruje uzel včetně jeho dat. Zkopíruje uzel včetně jeho dat.
XmlDeclaration Zkopíruje cílovou hodnotu a hodnotu dat z importovaného uzlu. Zkopíruje cílovou hodnotu a hodnotu dat z importovaného uzlu.
Všechny ostatní typy uzlů Tyto typy uzlů nelze importovat. Tyto typy uzlů nelze importovat.

Poznámka:

I když je možné importovat uzly DocumentType, dokument může mít pouze jeden typ DocumentType. Po importu typu dokumentu tedy před vložením do stromu se ujistěte, že dokument neobsahuje žádný typ dokumentu. Informace o odebírání uzlů naleznete v tématu Odebrání uzlů, obsahu a hodnot z dokumentu XML.

Viz také