XmlDocument.ImportNode(XmlNode, Boolean) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Importuje uzel z jiného dokumentu do aktuálního dokumentu.
public:
virtual System::Xml::XmlNode ^ ImportNode(System::Xml::XmlNode ^ node, bool deep);
public virtual System.Xml.XmlNode ImportNode (System.Xml.XmlNode node, bool deep);
abstract member ImportNode : System.Xml.XmlNode * bool -> System.Xml.XmlNode
override this.ImportNode : System.Xml.XmlNode * bool -> System.Xml.XmlNode
Public Overridable Function ImportNode (node As XmlNode, deep As Boolean) As XmlNode
Parametry
- node
- XmlNode
Uzel, který se importuje.
- deep
- Boolean
true
k provedení hlubokého klonu; false
v opačném případě .
Návraty
Importovaný XmlNode.
Výjimky
Volání této metody na typ uzlu, který nelze importovat.
Příklady
Následující příklad naimportuje uzel knihy z druhého dokumentu XML do původního dokumentu XML.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
//Create the XmlDocument.
XmlDocument^ doc = gcnew XmlDocument;
doc->LoadXml( "<bookstore><book genre='novel' ISBN='1-861001-57-5'><title>Pride And Prejudice</title></book></bookstore>" );
//Create another XmlDocument which holds a list of books.
XmlDocument^ doc2 = gcnew XmlDocument;
doc2->Load( "books.xml" );
//Import the last book node from doc2 into the original document.
XmlNode^ newBook = doc->ImportNode( doc2->DocumentElement->LastChild, true );
doc->DocumentElement->AppendChild( newBook );
Console::WriteLine( "Display the modified XML..." );
doc->Save( Console::Out );
}
using System;
using System.IO;
using System.Xml;
public class Sample
{
public static void Main()
{
//Create the XmlDocument.
XmlDocument doc = new XmlDocument();
doc.LoadXml("<bookstore>" +
"<book genre='novel' ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"</book>" +
"</bookstore>");
//Create another XmlDocument which holds a list of books.
XmlDocument doc2 = new XmlDocument();
doc2.Load("books.xml");
//Import the last book node from doc2 into the original document.
XmlNode newBook = doc.ImportNode(doc2.DocumentElement.LastChild, true);
doc.DocumentElement.AppendChild(newBook);
Console.WriteLine("Display the modified XML...");
doc.Save(Console.Out);
}
}
Option Explicit
Option Strict
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
'Create the XmlDocument.
Dim doc As New XmlDocument()
doc.LoadXml("<bookstore>" & _
"<book genre='novel' ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"</book>" & _
"</bookstore>")
'Create another XmlDocument which holds a list of books.
Dim doc2 As New XmlDocument()
doc2.Load("books.xml")
'Import the last book node from doc2 into the original document.
Dim newBook As XmlNode = doc.ImportNode(doc2.DocumentElement.LastChild, True)
doc.DocumentElement.AppendChild(newBook)
Console.WriteLine("Display the modified XML...")
doc.Save(Console.Out)
End Sub
End Class
Příklad používá soubor , books.xml
jako vstup.
<?xml version='1.0'?>
<!-- This file represents a fragment of a book store inventory database -->
<bookstore>
<book genre="autobiography" publicationdate="1981" ISBN="1-861003-11-0">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel" publicationdate="1967" ISBN="0-201-63361-2">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
<book genre="philosophy" publicationdate="1991" ISBN="1-861001-57-6">
<title>The Gorgias</title>
<author>
<name>Plato</name>
</author>
<price>9.99</price>
</book>
</bookstore>
Poznámky
Vrácený uzel nemá žádnou nadřazenou položku. Zdrojový uzel není změněn nebo odebrán z původního dokumentu; ImportNode
vytvoří kopii zdrojového uzlu.
Import uzlu vytvoří XmlNode
objekt vlastněný importovaným dokumentem, který je Name shodný NodeType se zdrojovým uzlem. Nový objekt má také atributy související s obory názvů (Prefix, LocalNamea NamespaceURI).
V závislosti na typu uzlu importovaného uzlu a hodnotě parametru deep
se podle potřeby zkopírují další informace. Tato metoda se pokusí zrcadlit očekávané chování, pokud se zkopíroval fragment kódu XML nebo zdroj HTML z jednoho dokumentu do druhého (rozpoznává, že v případě XML můžou mít tyto dva dokumenty různé DTD).
Následující tabulka popisuje konkrétní chování každého XmlNodeType.
Xmlnodetype | ImportNode(true) | ImportNode(false) |
---|---|---|
Atribut | Vlastnost Specified je nastavena na true vygenerovaný XmlAttribute. Potomci zdroje XmlAttribute se rekurzivně importují a výsledné uzly se znovu sestaví tak, aby vytvořily odpovídající podstrom. |
Parametr deep se nevztahuje na XmlAttribute uzly. Při importu vždy s sebou nesou podřízené položky. |
Cdata | Zkopíruje uzel, včetně jeho dat. | Zkopíruje uzel, včetně jeho dat. |
Komentář | Zkopíruje uzel, včetně jeho dat. | Zkopíruje uzel, včetně jeho dat. |
Documentfragment | Potomci zdrojového uzlu se rekurzivně naimportují a výsledné uzly se znovu sestaví tak, aby vytvořily odpovídající podstrom. | Vygeneruje se prázdný XmlDocumentFragment . |
Documenttype | Zkopíruje uzel, včetně jeho dat.* | Zkopíruje uzel, včetně jeho dat.* |
Prvek | Potomci zdrojového prvku a jeho zadaných uzlů atributů se rekurzivně importují a výsledné uzly se znovu sestaví tak, aby vytvořily odpovídající podstrom. Poznámka: Výchozí atributy se nekopírují. Pokud dokument importovaný do definice výchozích atributů pro tento název elementu, jsou přiřazeny. |
Zadané uzly atributů zdrojového prvku se naimportují a vygenerované XmlAttribute uzly jsou připojené k vygenerovanému XmlElementprvku .Poznámka: Výchozí atributy se nekopírují. Pokud dokument importovaný do definice výchozích atributů pro tento název elementu, jsou přiřazeny. |
EntityReference | Vzhledem k tomu, že zdrojové a cílové dokumenty mohou mít entity definované odlišně, tato metoda zkopíruje XmlEntityReference pouze uzel. 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 XmlEntityReference pouze uzel. Náhradní text není zahrnut. Pokud má cílový dokument definovanou entitu, přiřadí se její hodnota. |
Processinginstruction | Zkopíruje cílovou hodnotu a hodnotu dat z importovaného uzlu. | Zkopíruje cílovou hodnotu a hodnotu dat z importovaného uzlu. |
Text | Zkopíruje uzel, včetně jeho dat. | Zkopíruje uzel, včetně jeho dat. |
SignificantWhitespace | Zkopíruje uzel, včetně jeho dat. | Zkopíruje uzel, včetně jeho dat. |
Prázdné znaky | 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. |
*I když je možné importovat uzly DocumentType, dokument může mít pouze jeden DocumentType. Pokud dokument aktuálně obsahuje uzel DocumentType, je nutné ho před přidáním nového odebrat.