首页 > 解决方案 > 如何通过 Java 中的 int 数组的数量创建多个 XML 元素

问题描述

我一直在处理一种算法来在 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 元素。我尝试了 for each 和 for 循环来克服它。但我不能。

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++)是不必要的。只需将其删除并更改循环中的位顺序。输出正是我想要的。

标签: javaexcelxml

解决方案


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

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

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++)是不必要的。只需将其删除并更改循环中的位顺序。输出正是我想要的。


推荐阅读