PushNewChild* family of convenience functions
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 6b79917..4ff722b 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -1961,6 +1961,46 @@
     return attrib;

 }

 

+

+XMLElement* XMLElement::PushNewChildElement(const char* name)

+{

+    XMLElement* element = _document->NewElement(name);

+    // by construction, the new element has the same Document, so this

+    // call will always succeed

+    InsertEndChild(element);

+    return element;

+}

+

+XMLComment* XMLElement::PushNewChildComment(const char* comment)

+{

+    XMLComment* element = _document->NewComment(comment);

+    InsertEndChild(element);

+    return element;

+}

+

+XMLText* XMLElement::PushNewChildText(const char* text)

+{

+    XMLText* element = _document->NewText(text);

+    InsertEndChild(element);

+    return element;

+}

+

+XMLDeclaration* XMLElement::PushNewChildDeclaration(const char* text)

+{

+    XMLDeclaration* element = _document->NewDeclaration(text);

+    InsertEndChild(element);

+    return element;

+}

+

+XMLUnknown* XMLElement::PushNewUnknown(const char* text)

+{

+    XMLUnknown* element = _document->NewUnknown(text);

+    InsertEndChild(element);

+    return element;

+}

+

+

+

 //

 //	<ele></ele>

 //	<ele>foo<b>bar</b></ele>

diff --git a/tinyxml2.h b/tinyxml2.h
index a432f7e..c589fdb 100755
--- a/tinyxml2.h
+++ b/tinyxml2.h
@@ -1640,7 +1640,22 @@
 	/// See QueryIntText()

 	double DoubleText(double defaultValue = 0) const;

 	/// See QueryIntText()

-	float FloatText(float defaultValue = 0) const;

+    float FloatText(float defaultValue = 0) const;

+

+    /**

+        Convenience method to create a new XMLElement and add it as last (right)

+        child of this node. Returns the created and inserted element.

+    */

+    XMLElement* PushNewChildElement(const char* name);

+    /// See PushNewChildElement()

+    XMLComment* PushNewChildComment(const char* comment);

+    /// See PushNewChildElement()

+    XMLText* PushNewChildText(const char* text);

+    /// See PushNewChildElement()

+    XMLDeclaration* PushNewChildDeclaration(const char* text);

+    /// See PushNewChildElement()

+    XMLUnknown* PushNewUnknown(const char* text);

+

 

     // internal:

     enum ElementClosingType {