On an element like this: <self_closing attribute="1" /> isEmptyElement will return FALSE after you have iterated through the attributes. So you need to use implicitly call moveToElement(), in order to move the cursor back to the parent element and use isEmptyElement again.