问题描述
我正在尝试对节点重新排序,但是由于某种原因,结果不正确。
条件:
- 人员中的元素数量= someNodeList.size()
- 列表中的元素表示XML中所选节点的位置,其中列表中元素的整数值永远不会大于XML中的节点总数。
- 已选择要移动的节点
这是示例示例
<start>
<Item>
<CodeName attr="Name">
<Value>Sam</Value>
</CodeName>
<CodeName attr="Name">
<Value>Liam</Value>
</CodeName>
<CodeName attr="Name">
<Value>Joe</Value>
</CodeName>
<CodeName attr="Name">
<Value>Noah</Value>
</CodeName>
<CodeName attr="Name">
<Value>Kris</Value>
</CodeName>
<CodeName attr="Name">
<Value>Jems</Value>
</CodeName>
</Item>
</start>
初始订购
- 山姆
- 利亚姆
- 乔
- 诺亚
- Kris
- 宝石
我要更改的唯一节点是包含值Jems到位置2,Noah到位置5和Sam到位置4的节点。其他值可以重新排列。我只需要将这3个节点移动到给定位置即可。 如果我将值传递为{2,4,5}, 那么应该是
-
///除选定的三个(Jems,Sam,Noah)之外的任何节点
-
宝石
-
///除选定的三个(Jems,Sam,Noah)之外的任何节点
-
山姆
-
诺亚
-
///除选定的三个(Jems,Sam,Noah)之外的任何节点
利亚姆 杰姆斯 乔 山姆 诺亚 克里斯
这是我的循环:
List<Integer> position = Arrays.asList(2,5);
for(int x=0;x<someNodeList.size()-1;x>=0;x--){
Node oldNode = someNodeList.get(x).getParentNode().getParentNode();
Node parentNode = oldNode.getParentNode();
Nodelist someOtherNodeList = ((Element) parentNode).getElementsByTagName("Price");
parentNode.insertBefore(oldNode,someOtherNodeList.item(position.get(x));
}
输出位置为3、4、5。但是,如果我仅要重新排序两个节点,则此方法就很好。如果要重新排序任意数量的节点,如何获得一致的结果?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)