deep copy and clone
diff --git a/xmltest.cpp b/xmltest.cpp
index b6bb76f..499d626 100644
--- a/xmltest.cpp
+++ b/xmltest.cpp
@@ -1131,6 +1131,86 @@
}
{
+ // Deep Cloning of root element.
+ XMLDocument doc2;
+ XMLPrinter printer1;
+ {
+ // Make sure doc1 is deleted before we test doc2
+ const char* xml =
+ "<root>"
+ " <child1 foo='bar'/>"
+ " <!-- comment thing -->"
+ " <child2 val='1'>Text</child2>"
+ "</root>";
+ XMLDocument doc;
+ doc.Parse(xml);
+
+ doc.Print(&printer1);
+ XMLNode* root = doc.RootElement()->DeepClone(&doc2);
+ doc2.InsertFirstChild(root);
+ }
+ XMLPrinter printer2;
+ doc2.Print(&printer2);
+
+ XMLTest("Deep clone of element.", printer1.CStr(), printer2.CStr(), true);
+ }
+
+ {
+ // Deep Cloning of sub element.
+ XMLDocument doc2;
+ XMLPrinter printer1;
+ {
+ // Make sure doc1 is deleted before we test doc2
+ const char* xml =
+ "<?xml version ='1.0'?>"
+ "<root>"
+ " <child1 foo='bar'/>"
+ " <!-- comment thing -->"
+ " <child2 val='1'>Text</child2>"
+ "</root>";
+ XMLDocument doc;
+ doc.Parse(xml);
+
+ const XMLElement* subElement = doc.FirstChildElement("root")->FirstChildElement("child2");
+ subElement->Accept(&printer1);
+
+ XMLNode* clonedSubElement = subElement->DeepClone(&doc2);
+ doc2.InsertFirstChild(clonedSubElement);
+ }
+ XMLPrinter printer2;
+ doc2.Print(&printer2);
+
+ XMLTest("Deep clone of sub-element.", printer1.CStr(), printer2.CStr(), true);
+ }
+
+ {
+ // Deep cloning of document.
+ XMLDocument doc2;
+ XMLPrinter printer1;
+ {
+ // Make sure doc1 is deleted before we test doc2
+ const char* xml =
+ "<?xml version ='1.0'?>"
+ "<!-- Top level comment. -->"
+ "<root>"
+ " <child1 foo='bar'/>"
+ " <!-- comment thing -->"
+ " <child2 val='1'>Text</child2>"
+ "</root>";
+ XMLDocument doc;
+ doc.Parse(xml);
+ doc.Print(&printer1);
+
+ doc.DeepCopy(&doc2);
+ }
+ XMLPrinter printer2;
+ doc2.Print(&printer2);
+
+ XMLTest("DeepCopy of document.", printer1.CStr(), printer2.CStr(), true);
+ }
+
+
+ {
// This shouldn't crash.
XMLDocument doc;
if(XML_SUCCESS != doc.LoadFile( "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ))