Aem 如何收集在新版本中找到的新URL

Aem 如何收集在新版本中找到的新URL,aem,jcr,Aem,Jcr,我想得到的网址,作者在一些网页的新版本中添加 示例:作者在myPage中添加www.url1.com并激活myPage。--> 已生成版本1.0 作者在myPage中添加www.url2.com并激活myPage。-->版本1.2已生成->myPage版本1.2已发布到www.url1.com 和www.url2.com 在这种情况下,函数必须返回www.url2.com 我编写了一个函数getnewurl(Set>String>url),它收集旧版本和新版本的URL,并从新找到的URL中删除旧

我想得到的网址,作者在一些网页的新版本中添加

示例:作者在myPage中添加www.url1.com并激活myPage。--> 已生成版本1.0 作者在myPage中添加www.url2.com并激活myPage。-->版本1.2已生成->myPage版本1.2已发布到www.url1.com 和www.url2.com

在这种情况下,函数必须返回www.url2.com

我编写了一个函数getnewurl(Set>String>url),它收集旧版本和新版本的URL,并从新找到的URL中删除旧找到的URL,如下所示

private Set<String> getNewUrls(Set<String> urls){
   Set<String> newUrls = collectUrlsFromNodes(newVersionNode.getNodes());
   Set<String> oldUrls = collectUrlsFromNodes(oldVersionNode.getNodes());
   Set<String> myNewUrls newUrls.removeAll(oldUrls);
 }

private Set<String> collectUrlsFromNodes(final NodeIterator nodeIter) {

        Set<String> urlSet = new HashSet<String>();
        while (nodeIter.hasNext()) {
            Node subNode = nodeIter.nextNode();
            urlSet.addAll(collectUrlsFromNodes(subNode.getNodes()));
            if (subNode.hasProperty("fileReference")) {
                String url = subNode.getProperty("fileReference").getString();
                urlSet.add(url);
            }
        }
        return urlSet;
    }
私有设置getNewUrls(设置URL){
设置newURL=collectUrlsFromNodes(newVersionNode.getNodes());
设置oldUrls=collectUrlsFromNodes(oldVersionNode.getNodes());
设置myNewUrls newUrls.removeAll(旧URL);
}
私有集合collectUrlsFromNodes(最终节点生成器或节点生成器){
Set urlSet=newhashset();
while(nodeIter.hasNext()){
Node subNode=nodeIter.nextNode();
addAll(collectUrlsFromNodes(subNode.getNodes());
if(subNode.hasProperty(“fileReference”)){
字符串url=subNode.getProperty(“文件引用”).getString();
添加(url);
}
}
返回urlSet;
}

问题是,此函数还可以查找作者也已删除的URL(mybe,因为即使作者从页面中删除/编辑URL,它们仍存储在内容中)。你知道怎么解决这个问题吗

为了确保我正确理解您,您正在myPage的每个修订版上创建一个新节点?如果是这样,我将检查如何创建新节点。查看CRXDE并比较不同的节点。确保它们不同。将创建每个新节点。所有节点都以相同的方式创建。当作者在页面中添加新url时,将创建一个节点。