2017-03-28 8 views
0

"Object"タグを削除する必要がありますが、コンテンツを保存して保持する必要があります。それは可能ですか?XMLノードをJavaで削除する方法

<ds:KeyInfo> 
    <wsse:SecurityTokenReference> 
     <wsse:Reference URI="#b3f74c53-b79f-4dec-aa26-ca552f8f8745"/> 
    </wsse:SecurityTokenReference> 
</ds:KeyInfo> 
<ds:Object Id="id1"> // <-Remove this 
    <wsu:Timestamp> 
     <wsu:Created>2017-03-28T20:21:44Z</wsu:Created> 
     <wsu:Expires>2017-03-28T23:08:24Z</wsu:Expires> 
    </wsu:Timestamp> 
</ds:Object> // <-Remove this 

私が試した:

Node node = xml.getElementById("id1"); 
xml.getDocumentElement().removeChild(node); 

しかし:すべての

Org.w3c.dom.DOMException: NOT_FOUND_ERR: An attempt is made to reference a node in a context where it does not exist. 
+0

明確にしてください。 ' ...'を ' ...'に変更しようとしていますか? –

答えて

1

まず、削除するノードの親だけ、それを削除することができます

Node nodeToBeRemoved = xmlDoc.getElementById("id1"); 
Node parentNode = nodeToBeRemoved.getParentNode(); 
Node removedNode = parentNode.removeChild(nodeToBeRemoved); 

を第二に、 "コンテンツを保存して維持する"ために削除した子供の要素を親に添付する必要があります:

NodeList removedChildren = removedNode.getChildNodes(); 
for (int i = 0 ; i < removedChildren.getLength(); i++) { 
    Node child = removedChildren.item(i); 
    if (child.getNodeType() == Node.ELEMENT_NODE) { 
     parentNode.appendChild(child); 
    } 
} 
+0

完璧な男、それは働いた、タイ –

関連する問題