XmlNodeRef cloneXmlNodeFrom(xml_node<>* xmlnode) { XmlNodeRef node = CreateXmlNode(xmlnode->name()); for (xml_attribute<>* attr = xmlnode->first_attribute(); attr; attr = attr->next_attribute()) { node->setAttrText(attr->name(), attr->value()); } for (xml_node<>* subNode = xmlnode->first_node(); subNode; subNode = subNode->next_sibling()) { XmlNodeRef sub = cloneXmlNodeFrom(subNode); node->addChild(sub); } return node; }