Udostępnij przez


Kopiowanie istniejących węzłów z jednego dokumentu do innego

Metoda ImportNode to mechanizm, za pomocą którego węzeł lub całe poddrzewo węzła jest kopiowane z jednego obiektu XmlDocument do innego. Węzeł zwrócony z wywołania jest kopią węzła z dokumentu źródłowego, w tym wartości atrybutów, nazwy węzła, typu węzła i wszystkich atrybutów związanych z przestrzenią nazw, takich jak prefiks, nazwa lokalna i przestrzeń nazw Uniform Resource Identifier (URI). Dokument źródłowy nie został zmieniony. Po zaimportowaniu węzła nadal trzeba dodać go do drzewa przy użyciu jednej z metod używanych do wstawiania węzłów.

Gdy węzeł jest dołączony do nowego dokumentu, nowy dokument jest właścicielem węzła. Powód jest taki, że każdy węzeł ma dokument właściciela, gdy jest tworzony, nawet jeśli węzły są tworzone w oddzielnych fragmentach dokumentu. Jest to wymaganie modelu DOM (XML Document Object Model) i jest wymuszane przez projektowanie fabryczne w klasie XmlDocument. Na przykład CreateElement jest jedynym sposobem tworzenia nowych węzłów.

W zależności od typu zaimportowanego węzła i wartości parametru deep, dodatkowe informacje są kopiowane, jak to konieczne. Ta metoda próbuje zdublować zachowanie oczekiwane, jeśli fragment kodu XML lub źródła HTML został skopiowany z jednego dokumentu do innego, co oznacza fakt, że w przypadku kodu XML dwa dokumenty mogą mieć różne definicje typu dokumentu (DTD).

W poniższej tabeli opisano konkretne zachowanie dla każdego typu węzła, który można zaimportować.

Typ węzła parametr deep ma wartość true parametr deep ma wartość false
XmlAttribute Właściwość Specified jest ustawiona na true dla atrybutu XmlAttribute. Elementy potomne źródłowego atrybutu XmlAttribute są rekursywnie importowane, a wynikowe węzły są ponownie zmontowane w celu utworzenia odpowiedniego poddrzewa. Parametr deep nie ma zastosowania do węzłów XmlAttribute , ponieważ zawsze niosą ze sobą węzły podrzędne podczas importowania.
XmlCDataSection Kopiuje węzeł, w tym jego dane. Kopiuje węzeł, w tym jego dane.
XmlComment Kopiuje węzeł, w tym jego dane. Kopiuje węzeł, w tym jego dane.
FragmentDokumentuXML Elementy podrzędne węzła źródłowego są rekursywnie importowane, a wynikowe węzły są ponownie zmontowane w celu utworzenia odpowiedniego poddrzewa. Zostanie utworzony pusty element XmlDocumentFragment .
XmlDocumentType Kopiuje węzeł, w tym jego dane.* Kopiuje węzeł, w tym jego dane.*
Element Xml Elementy potomne elementu źródłowego są rekursywnie importowane, a wynikowe węzły są ponownie zmontowane w celu utworzenia odpowiedniego poddrzewa. Nuta: Atrybuty domyślne nie są kopiowane. Jeśli dokument importowany do definiuje atrybuty domyślne dla tej nazwy elementu, zostaną one przypisane. Określone węzły atrybutów elementu źródłowego są importowane, a wygenerowane węzły XmlAttribute są dołączone do nowego elementu. Węzły podrzędne nie są kopiowane. Nuta: Atrybuty domyślne nie są kopiowane. Jeśli dokument importowany do definiuje atrybuty domyślne dla tej nazwy elementu, zostaną one przypisane.
XmlEntityReference Ponieważ dokumenty źródłowe i docelowe mogą mieć zdefiniowane inaczej jednostki, ta metoda kopiuje tylko węzeł XmlEntityReference . Tekst zastępczy nie jest dołączony. Jeśli dokument docelowy ma zdefiniowaną jednostkę, zostanie przypisana jego wartość. Ponieważ dokumenty źródłowe i docelowe mogą mieć zdefiniowane inaczej jednostki, ta metoda kopiuje tylko węzeł XmlEntityReference . Tekst zastępczy nie jest dołączony. Jeśli dokument docelowy ma zdefiniowaną jednostkę, zostanie przypisana jego wartość.
Instrukcja przetwarzania XML Kopiuje wartość docelową i dane z zaimportowanego węzła. Kopiuje wartość docelową i dane z zaimportowanego węzła.
Tekst xml Kopiuje węzeł, w tym jego dane. Kopiuje węzeł, w tym jego dane.
XmlSignificantWhitespace Kopiuje węzeł, w tym jego dane. Kopiuje węzeł, w tym jego dane.
XmlWhitespace Kopiuje węzeł, w tym jego dane. Kopiuje węzeł, w tym jego dane.
Deklaracja XML Kopiuje wartość docelową i dane z zaimportowanego węzła. Kopiuje wartość docelową i dane z zaimportowanego węzła.
Wszystkie inne typy węzłów Nie można zaimportować tych typów węzłów. Nie można zaimportować tych typów węzłów.

Uwaga / Notatka

Mimo że można zaimportować węzły DocumentType, dokument może mieć tylko jeden typ Dokumentu. Dlatego po zaimportowaniu typu dokumentu przed wstawieniem go do drzewa należy upewnić się, że w dokumencie nie ma żadnego typu dokumentu. Aby uzyskać informacje na temat usuwania węzłów, zobacz Usuwanie węzłów, zawartości i wartości z dokumentu XML.

Zobacz także