【发布时间】:2012-09-13 12:48:36
【问题描述】:
我想从 XML 元素中删除空节点。 此 xml 是从供应商生成的,我无法控制 xml 的生成。但由于 XML 的空节点很少,我需要递归删除这些空节点。
这个 xml 是从 OMElement 获得的,我使用 [XMLUtils][1] 从这个对象中获得一个元素 示例 XML
<A>
<B>
<C>
<C1>
<C11>something</C11>
<C12>something</C12>
</C1>
</C>
<D>
<D1>
<D11>
<D111 operation="create">
<Node>something else</Node>
</D11>
</D11>
</D1>
<D2>
<D21>
</D21>
</D2>
</D>
</B>
</A>
由于 D21 是一个空节点,我想删除 D21,而现在 D2 是一个空节点,我想删除 D2,但由于 D 有 D1,我不想删除 D。
同样有可能我可以得到
<A>
<B>
<C>
</C>
</B>
</A>
现在因为 C 是空的,我想删除 C,然后是 B,最后是节点 A。 我正在尝试使用 Node 中的 removeChild() 方法来做到这一点
但到目前为止,我无法递归删除它们。 有什么递归删除它们的建议吗?
我正在递归地尝试获取节点和节点长度。但是节点长度没有帮助
if(childNode.getChildNodes().getLength() == 0 ){
childNode.getParentNode().removeChild(childNode);
}
问候
迪拉吉·乔希
【问题讨论】:
-
你为此编写的代码是什么
-
如果childNode.getChildNodes().getLength() == 0,表示没有子节点。如果要查找空节点,则尝试获取没有子节点的节点值,如果返回 null 或等效值,则可以删除该节点。
-
没有。 nodevalue 对于所有元素都为空。所以检查节点值是没有帮助的