从文档创建但未附加的元素:需要明确删除它吗?

时间:2014-06-03 14:14:17

标签: java xml dom jaxp

我需要创建一个独立于我的主文档的临时DOM元素。我是通过使用我的主文档来创建一个元素但不将它附加到树上来实现的。

Element temporaryParentElement = document.createElement(PERMISSIONSET);

它用于在对话框中构建表。关闭对话框后,我不再需要这个元素了,所以我试图删除它:

document.removeChild(temporaryParentElement);

这导致了一个例外:

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

如果我理解正确的话,如果创建的节点不是树的一部分,则无法删除它。我是否需要将其附加到树中然后调用remove方法?或者垃圾收集器是否关注这个元素?

1 个答案:

答案 0 :(得分:1)

元素创建与将其附加或删除到现有树不同。您使用document引用来创建元素,但随后将其附加到其他元素。您可以使用该元素的引用将其删除。

方法removeChild从之前添加的元素中删除元素(使用appendChild或在读取文档时解析)。

您必须找到代表该元素父元素的元素才能将其删除。假设父级是dialog。你会用:

dialog.removeChild(temporaryParentElement);