Объяснение, предлагаемое ircmaxell, что
вы изменяете список результатов при его итерации,
правильно, хотя я думал, что добавлю еще некоторые деталичтобы вы могли понять, почему это происходит.
Вот что делает ваш код при запуске
В начале в NodeList будет семь узлов.
Первый из них -
<zuq:data name="siteHeader"></zuq:data>
После этого количество узлов уменьшается до шести.Следующим удаляемым узлом будет
<zuq:data name="pageHeaderTitle"></zuq:data>
Но если вы посмотрите на свою разметку, вы увидите, что следующим элементом zuq: data будет
<zuq:data name="pageHeaderName" />
Теперь проблема в том,когда вы удаляете узел из документа, который также в настоящее время находится в NodeList, который в настоящее время повторяется, узел также будет удален из NodeList.Но текущая позиция в NodeList все равно останется прежней (или будет автоматически продвигаться, не зная, в какую сторону), например:
0 siteHeader
1 pageHeaderName
2 pageHeaderTitle
n …
Когда текущая позиция равна 0 и вы удаляете этот узел из документа,вы получаете список, подобный этому
0 pageHeaderName
1 pageHeaderTitle
n …
Вы все еще находитесь в позиции 0, и, таким образом, когда вы переходите к следующему элементу в NodeList, вы пропустите узел в новой позиции 0. Вы идете прямоto pageHeaderTitle, оставляя pageHeaderName необработанным.
После удаления pageHeaderTitle количество узлов уменьшается до пяти, что делает
<zuq:data name="pageHeaderName"></zuq:data>
новым элементом в текущей позиции.Следовательно, следующий удаляемый узел - это
<zuq:data name="postText">
<zuq:format type="trim">
<zuq:param name="length">300</zuq:param>
<zuq:param name="append">
<a>
<zuq:attr name="href">
./?action=viewpost&id=
<zuq:data name="postId"></zuq:data>
</zuq:attr>
<zuq:data name="postAuthor"></zuq:data>
</a>
</zuq:param>
</zuq:format>
</zuq:data>
Как видите, в нем есть еще два элемента zuq: data.Следовательно, количество узлов уменьшится до 2 (5 - 1 текущий узел - 2 дочерних элемента).
После этого итерация по NodeList заканчивается, в результате чего вы получаете
<zuq:data name="postHeader"></zuq:data>
и
<zuq:data name="pageHeaderName"></zuq:data>
все еще в документе.