0

次のような形式の 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 つの行の違いが何であるかさえわかりません。

4

1 に答える 1

2

そのドキュメントの DOM の 2 つのコピーを使用しているように聞こえますが、それdocは 1 つのコピー用であり、もう 1 つのコピーimageからのものです。docと の設定を担当するコードは示していませんがimage、それらが同じノード ツリーからのものであることを確認する必要があります。

于 2012-12-12T16:20:53.947 に答える