是否有一些简单的方法如何用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()方法。
您是否认为有一些不同/更简单的方法可以解决这个问题?
答案 0 :(得分:0)
不幸的是,对于JCR 2.0,总是在最后添加新节点,并且使用javax.jcr.Node.reorder(...)
是更改父节点子节点中子节点位置的唯一方法。至少可以说是不方便,但我怀疑添加这些方法会给已经很复杂的API增加太多的复杂性。