Kopiera befintliga noder från ett dokument till ett annat
Metoden ImportNode är den mekanism som en nod eller hela nodens underträd kopieras från en XmlDocument till en annan. Noden som returneras från anropet är en kopia av noden från källdokumentet, inklusive attributvärden, nodnamn, nodtyp och alla namnområdesrelaterade attribut, till exempel prefixet, det lokala namnet och namnområdets enhetliga resursidentifierare (URI). Källdokumentet har inte ändrats. När du har importerat noden måste du fortfarande lägga till den i trädet med någon av de metoder som används för att infoga noder.
När noden är kopplad till det nya dokumentet äger det nya dokumentet noden. Anledningen är att varje nod, när den skapas, har ett ägande dokument, även om noderna skapas i separata dokumentfragment. Detta är ett krav för XML-dokumentobjektmodellen (DOM) och framtvingas av fabriksdesignen för xmldocument-klassen . CreateElement är till exempel det enda sättet att skapa nya noder.
Beroende på nodtypen för den importerade noden och värdet för den djupa parametern kopieras ytterligare information efter behov. Den här metoden försöker spegla det förväntade beteendet om ett fragment av XML- eller HTML-källan kopierades från ett dokument till ett annat, med hänsyn till att de två dokumenten för XML kan ha olika definitioner av dokumenttyp (DTD).
I följande tabell beskrivs det specifika beteendet för varje typ av nod som kan importeras.
Nodtyp | djup parameter är sant | djupparameter är false |
---|---|---|
XmlAttribute | Specified Är inställt på true på XmlAttribute. Underordnade till källan XmlAttribute importeras rekursivt och de resulterande noderna samlas på nytt för att bilda motsvarande underträd. | Den djupa parametern gäller inte för XmlAttribute-noder , eftersom de alltid bär med sig sina underordnade noder när de importeras. |
XmlCDataSection | Kopierar noden, inklusive dess data. | Kopierar noden, inklusive dess data. |
XmlComment | Kopierar noden, inklusive dess data. | Kopierar noden, inklusive dess data. |
XmlDocumentFragment | Källnodens underordnade noder importeras rekursivt och de resulterande noderna samlas på nytt för att bilda motsvarande underträd. | En tom XmlDocumentFragment skapas. |
XmlDocumentType | Kopierar noden, inklusive dess data.* | Kopierar noden, inklusive dess data.* |
XmlElement | Underordnade till källelementet importeras rekursivt och de resulterande noderna samlas på nytt för att bilda motsvarande underträd. Obs! Standardattribut kopieras inte. Om dokumentet som importeras till definierar standardattribut för det här elementnamnet tilldelas de. | Angivna attributnoder för källelementet importeras och de genererade XmlAttribute-noderna är kopplade till det nya elementet. De underordnade noderna kopieras inte. Obs! Standardattribut kopieras inte. Om dokumentet som importeras till definierar standardattribut för det här elementnamnet tilldelas de. |
XmlEntityReference | Eftersom käll- och måldokumenten kan ha entiteterna definierade på olika sätt kopierar den här metoden endast noden XmlEntityReference . Ersättningstexten ingår inte. Om måldokumentet har definierat entiteten tilldelas dess värde. | Eftersom käll- och måldokumenten kan ha entiteterna definierade på olika sätt kopierar den här metoden endast noden XmlEntityReference . Ersättningstexten ingår inte. Om måldokumentet har definierat entiteten tilldelas dess värde. |
XmlProcessingInstruction | Kopierar mål- och datavärdet från den importerade noden. | Kopierar mål- och datavärdet från den importerade noden. |
Xmltext | Kopierar noden, inklusive dess data. | Kopierar noden, inklusive dess data. |
XmlSignificantWhitespace | Kopierar noden, inklusive dess data. | Kopierar noden, inklusive dess data. |
XmlWhitespace | Kopierar noden, inklusive dess data. | Kopierar noden, inklusive dess data. |
XmlDeclaration | Kopierar mål- och datavärdet från den importerade noden. | Kopierar mål- och datavärdet från den importerade noden. |
Alla andra nodtyper | Det går inte att importera dessa nodtyper. | Det går inte att importera dessa nodtyper. |
Kommentar
Även om DocumentType-noder kan importeras kan ett dokument bara ha en DocumentType. När du har importerat dokumenttypen måste du därför se till att det inte finns någon dokumenttyp i dokumentet innan du infogar den i trädet. Information om hur du tar bort noder finns i Ta bort noder, innehåll och värden från ett XML-dokument.