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.