我无法将节点内容(所有子节点)移动到另一个(编辑:保留顺序):
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()
返回的数字都会减少,算法将错过两个元素中的一个。
我该如何解决这个问题?
答案 0 :(得分:1)
向后搜索集合:
for ( int i=children.getLength() - 1; i>=0 ; i-- ) {
Node nodeToAdd = children.item(i);
renamedNode.appendChild( nodeToAdd );
}
答案 1 :(得分:0)
我找到了一个“复制”而不是移动节点的解决方案,你只需要传递一个深度复制的节点:
NodeList children = pathoNode.getChildNodes();
for ( int i=0 ; i<children.getLength() ; i++ ) {
Node nodeToAdd = children.item(i);
renamedNode.appendChild( nodeToAdd.cloneNode(true) );
}