次のような形式の XML ファイルがあります。
<state>
<image>
<imageUrl>./testImages/testimage.png</imageUrl>
<perspective id="0">
<zoomLevel>1.0</zoomLevel>
<offsetX>0.0</offsetX>
<offsetY>0.0</offsetY>
</perspective>
<perspective id="1">
<zoomLevel>1.0</zoomLevel>
<offsetX>0.0</offsetX>
<offsetY>0.0</offsetY>
</perspective>
</image>
</state>
そのファイルには複数のイメージ ノードがありますが、それは重要ではありません。ドキュメントから < image > ノード (およびそのすべての子ノード) を削除できるようにしたいと考えています。
これまでのところ、次のコードがあります。
private void updateImageElement(Element image, Model model) throws SAXException, IOException, ParserConfigurationException{
Element rootElement = doc.getDocumentElement();
rootElement.removeChild(image);
image.getParentNode().removeChild(image);
}
「rootElement.removeChild(image);」行は次の例外をスローします。
org.w3c.dom.DOMException: NOT_FOUND_ERR: An attempt is made to reference a node in a context where it does not exist.
「rootElement」を印刷すると、画像の親ノードである「状態」が表示されるため、これは奇妙です。
次に、次の行を試しました ("image.getParentNode().removeChild(image))。これは例外をスローしませんが、何も削除されません。
その行を印刷すると、親ノードが「状態であるため、2 つの行の違いが何であるかさえわかりません。