Reuse "is element with name" check
diff --git a/tinyxml2.cpp b/tinyxml2.cpp
index 7df8443..e82482e 100755
--- a/tinyxml2.cpp
+++ b/tinyxml2.cpp
@@ -897,11 +897,9 @@
 const XMLElement* XMLNode::FirstChildElement( const char* name ) const

 {

     for( const XMLNode* node = _firstChild; node; node = node->_next ) {

-        const XMLElement* element = node->ToElement();

+        const XMLElement* element = node->ToElementWithName( name );

         if ( element ) {

-            if ( !name || XMLUtil::StringEqual( element->Name(), name ) ) {

-                return element;

-            }

+            return element;

         }

     }

     return 0;

@@ -911,11 +909,9 @@
 const XMLElement* XMLNode::LastChildElement( const char* name ) const

 {

     for( const XMLNode* node = _lastChild; node; node = node->_prev ) {

-        const XMLElement* element = node->ToElement();

+        const XMLElement* element = node->ToElementWithName( name );

         if ( element ) {

-            if ( !name || XMLUtil::StringEqual( element->Name(), name ) ) {

-                return element;

-            }

+            return element;

         }

     }

     return 0;

@@ -925,9 +921,8 @@
 const XMLElement* XMLNode::NextSiblingElement( const char* name ) const

 {

     for( const XMLNode* node = _next; node; node = node->_next ) {

-        const XMLElement* element = node->ToElement();

-        if ( element

-                && (!name || XMLUtil::StringEqual( name, element->Name() ))) {

+        const XMLElement* element = node->ToElementWithName( name );

+        if ( element ) {

             return element;

         }

     }

@@ -938,9 +933,8 @@
 const XMLElement* XMLNode::PreviousSiblingElement( const char* name ) const

 {

     for( const XMLNode* node = _prev; node; node = node->_prev ) {

-        const XMLElement* element = node->ToElement();

-        if ( element

-                && (!name || XMLUtil::StringEqual( name, element->Name() ))) {

+        const XMLElement* element = node->ToElementWithName( name );

+        if ( element ) {

             return element;

         }

     }

@@ -1056,6 +1050,21 @@
         insertThis->_memPool->SetTracked();

 }

 

+const XMLElement* XMLNode::ToElementWithName( const char* name ) const

+{

+    const XMLElement* element = this->ToElement();

+    if ( element == 0 ) {

+        return 0;

+    }

+    if ( name == 0 ) {

+        return element;

+    }

+    if ( XMLUtil::StringEqual( element->Name(), name ) ) {

+       return element;

+    }

+    return 0;

+}

+

 // --------- XMLText ---------- //

 char* XMLText::ParseDeep( char* p, StrPair* )

 {