XmlNode.CloneNode(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í.
Vytvoří duplikát uzlu při přepsání v odvozené třídě.
public:
abstract System::Xml::XmlNode ^ CloneNode(bool deep);
public abstract System.Xml.XmlNode CloneNode (bool deep);
abstract member CloneNode : bool -> System.Xml.XmlNode
Public MustOverride Function CloneNode (deep As Boolean) As XmlNode
Parametry
- deep
- Boolean
true
rekurzivně klonovat podstrom pod zadaným uzlem; false
klonování pouze samotného uzlu.
Návraty
Klonovaný uzel.
Výjimky
Volání této metody na typ uzlu, který nelze naklonovat.
Příklady
Následující příklad ukazuje rozdíl mezi hlubokým a mělkým klonem.
#using <System.Xml.dll>
using namespace System;
using namespace System::IO;
using namespace System::Xml;
int main()
{
XmlDocument^ doc = gcnew XmlDocument;
doc->LoadXml( "<book ISBN='1-861001-57-5'>"
"<title>Pride And Prejudice</title>"
"<price>19.95</price>"
"</book>" );
XmlNode^ root = doc->FirstChild;
//Create a deep clone. The cloned node
//includes the child nodes.
XmlNode^ deep = root->CloneNode( true );
Console::WriteLine( deep->OuterXml );
//Create a shallow clone. The cloned node does not
//include the child nodes, but does include its attribute.
XmlNode^ shallow = root->CloneNode( false );
Console::WriteLine( shallow->OuterXml );
}
using System;
using System.IO;
using System.Xml;
public class Sample {
public static void Main() {
XmlDocument doc = new XmlDocument();
doc.LoadXml("<book ISBN='1-861001-57-5'>" +
"<title>Pride And Prejudice</title>" +
"<price>19.95</price>" +
"</book>");
XmlNode root = doc.FirstChild;
//Create a deep clone. The cloned node
//includes the child nodes.
XmlNode deep = root.CloneNode(true);
Console.WriteLine(deep.OuterXml);
//Create a shallow clone. The cloned node does not
//include the child nodes, but does include its attribute.
XmlNode shallow = root.CloneNode(false);
Console.WriteLine(shallow.OuterXml);
}
}
Option Explicit
Option Strict
Imports System.IO
Imports System.Xml
Public Class Sample
Public Shared Sub Main()
Dim doc As New XmlDocument()
doc.LoadXml("<book ISBN='1-861001-57-5'>" & _
"<title>Pride And Prejudice</title>" & _
"<price>19.95</price>" & _
"</book>")
Dim root As XmlNode = doc.FirstChild
'Create a deep clone. The cloned node
'includes the child nodes.
Dim deep As XmlNode = root.CloneNode(True)
Console.WriteLine(deep.OuterXml)
'Create a shallow clone. The cloned node does not
'include the child nodes, but does include its attribute.
Dim shallow As XmlNode = root.CloneNode(False)
Console.WriteLine(shallow.OuterXml)
End Sub
End Class
Poznámky
Tato metoda slouží jako konstruktor kopírování pro uzly. Duplicitní uzel nemá žádný nadřazený uzel (ParentNode vrátí null
).
Následující tabulka popisuje konkrétní chování jednotlivých XmlNodeType.
Xmlnodetype | CloneNode(true) | CloneNode(false) |
---|---|---|
Atribut | Naklonuje uzel atributu, včetně podřízených uzlů. | Naklonuje uzel atributu, včetně podřízených uzlů. |
Cdata | Naklonuje uzel CData, včetně jeho datového obsahu. | Naklonuje uzel CData, včetně jeho datového obsahu. |
Komentář | Naklonuje uzel komentáře, včetně jeho textového obsahu. | Naklonuje uzel komentáře, včetně jeho textového obsahu. |
Dokument | Naklonuje uzel dokumentu, včetně všech podřízených uzlů. | Naklonuje uzel dokumentu. |
Documentfragment | Naklonuje uzel fragmentu dokumentu, včetně všech podřízených uzlů. | Naklonuje uzel fragmentu dokumentu. |
Documenttype | Naklonuje uzel typu dokumentu. | Naklonuje uzel typu dokumentu. |
Prvek | Naklonuje uzel elementu, jeho atributy a všechny podřízené uzly. | Naklonuje uzel elementu a jeho atributy, včetně všech výchozích atributů. |
Entita | Uzly entit nelze naklonovat. | Uzly entit nelze naklonovat. |
EntityReference | Naklonuje referenční uzel entity. Náhradní text není zahrnut. | Naklonuje referenční uzel entity. Náhradní text není zahrnut. |
Notace | Notační uzly nelze naklonovat. | Notační uzly nelze naklonovat. |
Processinginstruction | Naklonuje uzel instrukce zpracování, včetně cíle a dat. | Naklonuje uzel instrukce zpracování, včetně cíle a dat. |
SignificantWhitespace | Naklonuje významný prázdný uzel, včetně jeho datové hodnoty. | Naklonuje významný prázdný uzel, včetně jeho datové hodnoty. |
Text | Naklonuje textový uzel, včetně jeho datové hodnoty. | Naklonuje textový uzel, včetně jeho datové hodnoty. |
Prázdné znaky | Naklonuje uzel prázdného místa, včetně jeho datové hodnoty. | Naklonuje uzel prázdného místa, včetně jeho datové hodnoty. |
Xmldeclaration | Naklonuje uzel XmlDeclaration, včetně jeho datové hodnoty. | Naklonuje uzel XmlDeclaration, včetně jeho datové hodnoty. |
Všechny ostatní typy uzlů. | Tyto typy uzlů nelze naklonovat. | Tyto typy uzlů nelze naklonovat. |