Zmiana nazwy węzła węzła xml z Javą

Mam następujący scenariusz: mam dokument XML, np. lubię to

<someRootElement>
<tag1>
    <tag2 
        someKey=someValue
        someKey2=someValue2
    />
    <tag3/>
    <tag4
        newKey=newValue
        newKey2=newValue2
    />
</tag1>
</someRootElement>

Teraz chcę rodzicatag1 być nazywanymnaprawdęCoolTag bez utraty węzłów potomnych. Próbowałem następujących rzeczy, ale niestety nie działa tak, jak chciałbym (ale wiem dlaczego, b / c brakuje czegoś, tak myślę):

// the new element:
Element neu = doc.createElement( newValue );
// append it to the root:
root.appendChild( neu );
// get all the child nodes:
NamedNodeMap nnm = nodes.item(i).getAttributes();
for( int dg = 0; dg < nnm.getLength(); dg++ ){
    neu.setAttribute(  nnm.item( dg ).getNodeName(),
    nnm.item( dg ).getNodeValue() );
}
//---------------------------------------------------------
// HERE I GUESS I AM MISSING THE PART WHERE THE CHILD NODES
// ARE BEING APPENDED TO THE NEW NODE?????
//---------------------------------------------------------
// nodes.item(i) := the old value (nodes := is a NodeList
root.replaceChild( neu, nodes.item(i));
TransformerFactory tFactory     = TransformerFactory.newInstance();
Transformer transformer         = tFactory.newTransformer();
DOMSource source                = new DOMSource( doc );
StreamResult result         = new StreamResult( xml );
transformer.transform( source, result );
nodes.item( i ).getParentNode().removeChild( nodes.item(i) );

Teraz to działa do pewnego stopnia, jak już wspomniałem, myślę, że brakuje mi części, w której węzły potomne są dołączane, ale to, co naprawdę chciałem wiedzieć, to czy istnieje naprawdę krótki sposób na zmianę nazwy węzła nadrzędnego bez musisz wszystko skopiować i zastąpić całą rzecz?

Z wyprzedzeniem !!!

questionAnswers(5)

yourAnswerToTheQuestion