0

有没有一些简单的方法可以用 JCR 2.0 中的另一个节点替换现有节点?

由于节点的顺序,目前我正在执行以下步骤:

第 1 步:找到我要替换的现有节点之后的兄弟节点:

        if (preserveOrdering) {
        NodeIterator iter = parent.getNodes();
        boolean found = false;
        while (iter.hasNext()) {
            if (tempNode.equals(iter.nextNode())) {
                found = true;
                if (iter.hasNext()) {
                    tempNodeSibling = iter.nextNode();
                    break;
                }
            }
        }
        assert found;
    }

第2步:删除现有节点:

tempNode.remove();

步骤3:创建新节点(我正在克隆,但可能可以使用node.addNode()方法,新节点附加到子节点列表的末尾):

workspace.clone(workspace.getName(), existingNodePath, tempNodePath, false);

第 4 步:将新节点移到他的旧 tempNode 兄弟之前(在第一步中记住)

parent.orderBefore(tempNodeName, tempNodeSibling.getName());

所有这些步骤在我看来都很麻烦。但我在 JCR API 中找不到更好的方法。主要是因为只有一种方法 orderBefore() 用于排序。

你认为有一些不同/更简单的方法可以解决这个问题吗?

4

1 回答 1

0

不幸的是,在 JCR 2.0 中,新节点总是添加到最后,使用javax.jcr.Node.reorder(...)是更改父节点列表中子节点位置的唯一方法。至少可以说很不方便,但我怀疑添加这样的方法会给已经很复杂的 API 增加太多的复杂性。

于 2014-01-10T14:20:05.093 回答