当前位置: 代码迷 >> java >> 如何通过Java中的int数组编号创建多个XML元素
  详细解决方案

如何通过Java中的int数组编号创建多个XML元素

热度:59   发布时间:2023-07-27 09:49:23.0

我一直在处理一种算法,用Java创建xml文件的自动结构。

这个想法是对XML文件中的元素进行计数,然后将它们放入列表中,然后对其中的重复元素进行计数,最后创建另一个XML节点,其中包含该列表中重复数字的数量。

我通过使用Map <String, Long>Collections来获取重复的元素和出现次数,从而解决了第一个问题。

我通过将出现次数转换为int值,将它们放在Arraylist中。

Collection test = counterMap.values();
        List <Integer> list = new ArrayList(test);
        Iterator listIteration = list.iterator();
        ArrayList <Integer> intValues = new ArrayList <>();
        while (listIteration.hasNext()) {
            int Values = Integer.parseInt(listIteration.next().toString());
            intValues.add(Values);
        }

现在,我有一个int值的列表,例如intValues=[1,3,3,4,2,2]

通过使用该列表,我想使用此列表中的数字创建一个XML元素。 我为每个循环尝试克服它。 但是我不能。

Element example;

        for (int i = 0; i <= list.size(); i++) {
            root = doc.createElement("root");
            pattern.appendChild(root);
            //for (Iterator<Integer> h = intValues.iterator(); h.hasNext();) {
            //Integer item = h.next();
            for (Integer a : intValues) {
                for (int b = 1; b < a; b++) {
                    example = doc.createElement("example");
                    root.appendChild(example);

                }

            }
        }

示例输出可能是:

<root>
  <example>
<root>
<root>
  <example>
  <example>
  <example>
<root>
<root>
  <example>
  <example>
  <example>
<root>
<root>
  <example>
  <example>
  <example>
  <example>
<root>

(int arrayList中的元素数)

任何想法都将继续前进,对于错误或不清楚的部分,我们深表歉意。

##########解决方案更新############

我找到了解决方案,在这里添加了它,这样任何人都可以使用,如果他们最终遇到相同的问题。 感谢您的所有帮助。

for (Integer a : intValues) {

            root= doc.createElement("root");

            for (int b = 1; b <= a; b++) {

                pattern.appendChild(root);
                example= doc.createElement("example");
                rule.appendChild(example);

            }
        }

这部分for (int i = 0; i <= list.size(); i++)是不必要的。 只需将其删除并在循环中更改位顺序即可。 输出正是我想要的。

##########解决方案更新############

我找到了解决方案,在这里添加了它,这样任何人都可以使用,如果他们最终遇到相同的问题。 感谢您的所有帮助。

for (Integer a : intValues) {

            root= doc.createElement("root");

            for (int b = 1; b <= a; b++) {

                pattern.appendChild(root);
                example= doc.createElement("example");
                rule.appendChild(example);

            }
        }

这部分for (int i = 0; i <= list.size(); i++)是不必要的。 只需将其删除并在循环中更改位顺序即可。 输出正是我想要的。

  相关解决方案