Как создать несколько элементов XML по номерам массива int в Java - PullRequest
0 голосов
/ 13 февраля 2019

Я имел дело с одним алгоритмом для создания автоматической структуры XML-файла в Java.

Идея состоит в том, чтобы подсчитать элементы в XML-файле, поместить их в список, а затем подсчитать повторяющиеся элементывнутри, наконец, создайте еще один XML-узел с количеством повторяющихся чисел внутри этого списка.

Я решил первую проблему, используя Map <String, Long> и Collections, чтобы получить повторяющиеся элементы и количество вхождений.

Я поместил их в Arraylist, преобразовав число вхождений в значения int.

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++) не нужна.Просто удалите его и измените порядок следования в циклах.Вывод - именно то, что я хочу.

1 Ответ

0 голосов
/ 14 февраля 2019

########## ОБНОВЛЕНИЕ РЕШЕНИЯ ############

Я нашел решение, добавляю его сюда, чтобы кто-нибудьможет иметь его, если они в конечном итоге сталкиваются с той же проблемойСпасибо за помощь.

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++) не нужна.Просто удалите его и измените порядок следования в циклах.Вывод - именно то, что я хочу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...