diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index c00f0e3..efaa29a 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -411,6 +411,12 @@
 }
 
 
+void XMLUtil::ToStr( long long v, char* buffer, int bufferSize )
+{
+    TIXML_SNPRINTF( buffer, bufferSize, "%lld", v );
+}
+
+
 void XMLUtil::ToStr( unsigned v, char* buffer, int bufferSize )
 {
     TIXML_SNPRINTF( buffer, bufferSize, "%u", v );
@@ -446,6 +452,14 @@
     return false;
 }
 
+bool XMLUtil::ToLongLong( const char* str, long long* value )
+{
+    if ( TIXML_SSCANF( str, "%lld", value ) == 1 ) {
+        return true;
+    }
+    return false;
+}
+
 bool XMLUtil::ToUnsigned( const char* str, unsigned *value )
 {
     if ( TIXML_SSCANF( str, "%u", value ) == 1 ) {
@@ -1166,6 +1180,14 @@
 }
 
 
+void XMLAttribute::SetAttribute( long long v )
+{
+    char buf[BUF_SIZE];
+    XMLUtil::ToStr( v, buf, BUF_SIZE );
+    _value.SetStr( buf );
+}
+
+
 void XMLAttribute::SetAttribute( unsigned v )
 {
     char buf[BUF_SIZE];
@@ -1322,6 +1344,19 @@
 	}
 }
 
+void	XMLElement::SetText( long long inNum )
+{
+    char buf[BUF_SIZE];
+    XMLUtil::ToStr( inNum, buf, BUF_SIZE );
+	if ( FirstChild() && FirstChild()->ToText() )
+		FirstChild()->SetValue( buf );
+	else {
+		XMLText*	theText = GetDocument()->NewText( buf );
+		InsertFirstChild( theText );
+	}
+}
+
+
 
 void	XMLElement::SetBoolFirstChild( bool inBool )
 {
@@ -1371,6 +1406,19 @@
 }
 
 
+XMLError XMLElement::QueryLongLongText( long long* ival ) const
+{
+    if ( FirstChild() && FirstChild()->ToText() ) {
+        const char* t = FirstChild()->ToText()->Value();
+        if ( XMLUtil::ToLongLong( t, ival ) ) {
+            return XML_SUCCESS;
+        }
+        return XML_CAN_NOT_CONVERT_TEXT;
+    }
+    return XML_NO_TEXT_NODE;
+}
+
+
 XMLError XMLElement::QueryUnsignedText( unsigned* uval ) const
 {
     if ( FirstChild() && FirstChild()->ToText() ) {
