diff --git a/src/xercesc/dom/impl/DOMNodeIteratorImpl.cpp b/src/xercesc/dom/impl/DOMNodeIteratorImpl.cpp
index 1809d440b3cf737c4abff67ee753d6d3ae033228..f5b6021362c33008bc9558ae942ef232ea373cf3 100644
--- a/src/xercesc/dom/impl/DOMNodeIteratorImpl.cpp
+++ b/src/xercesc/dom/impl/DOMNodeIteratorImpl.cpp
@@ -250,7 +250,8 @@ DOMNode* DOMNodeIteratorImpl::nextNode (DOMNode* node, bool visitChildren) {
     // only check children if we visit children.
     if (visitChildren) {
         //if hasChildren, return 1st child.
-        if (node->hasChildNodes()) {
+        if ((fExpandEntityReferences || node->getNodeType()!=DOMNode::ENTITY_REFERENCE_NODE) && 
+            node->hasChildNodes()) {
             result = node->getFirstChild();
             return result;
         }
@@ -303,7 +304,8 @@ DOMNode* DOMNodeIteratorImpl::previousNode (DOMNode* node) {
 
     // if sibling has children, keep getting last child of child.
     if (result->hasChildNodes()) {
-        while (result->hasChildNodes()) {
+        while ((fExpandEntityReferences || result->getNodeType()!=DOMNode::ENTITY_REFERENCE_NODE) && 
+               result->hasChildNodes()) {
             result = result->getLastChild();
         }
     }