1

我无法将节点内容(其所有子节点)移动到另一个节点(编辑:保持顺序):

Document document = pathoNode.getOwnerDocument();
Element renamedNode = document.createElement("PATHO");
NodeList children = pathoNode.getChildNodes();
for ( int i=0 ; i<children.getLength() ; i++ ) {
    Node nodeToAdd = children.item(i);
    renamedNode.appendChild( nodeToAdd );
}

当我调用时.appendChild( nodeToAdd ),该节点是从 中删除的pathoNode,而且是从NodeList返回的getChildNodes()

children.getLength()因此,每次我们迭代时,返回的数字都会减少,并且算法会错过一对二的元素。

我怎样才能解决这个问题?

4

2 回答 2

1

向后浏览集合:

for ( int i=children.getLength() - 1; i>=0 ; i-- ) {
    Node nodeToAdd = children.item(i);
    renamedNode.appendChild( nodeToAdd );
}
于 2013-05-15T15:47:00.930 回答
0

我找到了一个“复制”而不是移动节点的解决方案,你只需传递一个深度复制的节点:

NodeList children = pathoNode.getChildNodes();
for ( int i=0 ; i<children.getLength() ; i++ ) {
    Node nodeToAdd = children.item(i);
    renamedNode.appendChild( nodeToAdd.cloneNode(true) );
}
于 2013-05-15T16:27:43.547 回答