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(); } }