我有一个格式如下的 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))。这不会引发异常,但也没有任何内容被删除。
如果我打印那行,它还说父节点是“状态,所以我什至无法弄清楚这两行之间的区别是什么。