重新排序XML节点-Java DOM解析器

问题描述

我正在尝试对节点重新排序,但是由于某种原因,结果不正确。

条件:

  • 人员中的元素数量= 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>

初始订购

  1. 山姆
  2. 利亚姆
  3. 诺亚
  4. Kris
  5. 宝石

我要更改的唯一节点是包含值Jems到位置2,Noah到位置5和Sam到位置4的节点。其他值可以重新排列。我只需要将这3个节点移动到给定位置即可。 如果我将值传递为{2,4,5}, 那么应该是

  1. ///除选定的三个(Jems,Sam,Noah)之外的任何节点

  2. 宝石

  3. ///除选定的三个(Jems,Sam,Noah)之外的任何节点

  4. 山姆

  5. 诺亚

  6. ///除选定的三个(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 (将#修改为@)