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た からも削除されます。NodeListgetChildNodes()

したがって、 によって返される数children.getLength()は反復するたびに減少し、アルゴリズムは 2 つの要素のうち 1 つを逃します。

どうすればこれを修正できますか?

4

2 に答える 2

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 に答える