如何删除节点子节点?

时间:2015-02-10 12:14:26

标签: cq5 aem jcr

在我写一些jcr文件夹/var/myProject/sitemap中的sitemap.xml之前,我想删除旧的sitemap.xml

Resource resource = resourceResolver.getResource("/var/myProject/sitemap");
sitemapNode = resource.adaptTo(Node.class);
sitemapNode.getNodes().remove();

sitemapNode.getNodes().remove();提供以下异常:

*ERROR* [CM Event Dispatcher (Fire ConfigurationEvent: pid=MyClass] The start method has thrown an exception (java.lang.UnsupportedOperationException)

如何删除sitemapNode的所有子项?

1 个答案:

答案 0 :(得分:1)

sitemapNode.getNodes();会返回NodeIterator。其中可用的remove()方法是从Iterator继承的方法。

引用文档remove()

  

从底层集合中删除返回的最后一个元素   这个迭代器(可选操作)

当您尝试从不可修改的集合中删除时,它会提供UnsupportedOperationException

使用sitemapNode删除sitemapNode.remove()并重新创建它(这会将所有子节点与节点一起删除),或者遍历每个子节点,然后单独调用remove()方法。这将调用继承自javax.jcr.Item的Node remove()方法。