Заполнение элемента XML тем же тегом, но другим содержимым - PullRequest
0 голосов
/ 31 марта 2020

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

products_extra_fields

products_extra_fields_id | products_extra_fields_name
-------------------------|---------------------------
           1             |       cpu
           2             |       hdd
           3             |       diagonal
           4             |       gpu

products

products_id | products_name | products_quantity  
------------| --------------|-------------------
      1     |  product name |      123
      2     |  product name |      125
      3     |  product name |      12
      4     |  product name |      43

products_to_products_extra_fields

products_id  | products_extra_fields_id | products_extra_fields_value
-------------|--------------------------|---------------------------- 
      3      |            1             |             i7
      2      |            4             |           geforce
      2      |            1             |             i5
      3      |            3             |             15.6

В этих таблицах много записей и значений, так что это просто упрощенная версия. Поэтому мне нужно сделать что-то вроде этого:

<attrs>
   <a name="cpu">
      <![CDATA[INTEL]]>
   </a>
   <a name="gpu">
      <![CDATA[NVIDIA]]>
   </a>
   <a name="HDD">
      <![CDATA[256SSD]]>
   </a>
</attrs>

и так далее для стольких атрибутов, которые есть в одном продукте. Я пытался заполнить <attrs></attrs> этим:

for (int i = 0; i <= 5; i++) {
   attributes.appendChild(singleAttribute.cloneNode(true));
   singleAttribute.setAttributeNode(attributeValue);
   attributeValue.setValue(_productRS.getString("products_extra_fields_name"));
   singleAttribute.appendChild(xmlDoc.createTextNode(_productRS.getString("products_extra_fields_value")));
}

где

Element attributes = xmlDoc.createElement("attrs");
Element singleAttribute = xmlDoc.createElement("a");

Я знаю, что источником этой проблемы является основная итерация while((rs!=null) && (rs.next())){...}, где rs - ResultSet принимает только один products_extra_fields_id, соответствующий products_id, и мне нужно взять все products_extra_fields_id за один products_id. Приведенный выше код дает мне такой результат:

   <a name="cpu">
      <![CDATA[INTEL]]>
   </a>
   <a name="cpu">
      <![CDATA[INTELINTEL]]>
   </a>
   <a name="cpu">
      <![CDATA[INTELINTELINTEL]]>
   </a>
   ...

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

...