Что мне нужно сделать, это создать таблицу с именем переменной столбцов (назовите ее х). Проблема, с которой я сталкиваюсь, заключается в том, что любое из полей, которые могут превратиться в td, может быть «однорядным элементом», то есть colspan равно x Проблема в том, что получить начало и конец строки способом, соответствующим правилам форматирования, требуемым XML, было сложно.
Вот как будут выглядеть данные:
<status>
<section title="">
<columns>3</columns>
<fields>
<field label="Label 1">test data 1</field>
<field label="Label 2">test data 2</field>
<field label="Label 3">test data 3</field>
<field singleRow="true" label="Label 4">test data 4</field>
<field label="Label 5">test data 5</field>
<field label="Label 6">test data 6</field>
<field label="Label 7">test data 7</field>
<field label="Label 8">test data 8</field>
<field label="Label 9">test data 9</field>
<field singleRow="true" label="Label 10">test data 10</field>
<field label="Label 11">test data 11</field>
<field label="Label 12">test data 12</field>
<field label="Label 13">test data 13</field>
<field label="Label 14">test data 14</field>
</fields>
</section>
Вывод должен быть следующим:
<table>
<tr>
<td>Label 1</td>
<td>test data 1</td>
<td>Label 2</td>
<td>test data 2</td>
<td>Label 3</td>
<td>test data 3</td>
</tr>
<tr>
<td>Label 4</td>
<td colspan='5'>test data 4</td>
</tr>
<tr>
<td>Label 5</td>
<td>test data 5</td>
<td>Label 6</td>
<td>test data 6</td>
<td>Label 7</td>
<td>test data 7</td>
</tr>
<tr>
<td>Label 8</td>
<td>test data 8</td>
<td>Label 9</td>
<td colspan='3'>test data 9</td>
</tr>
<tr>
<td>Label 10</td>
<td colspan='5'>test data 10</td>
</tr>
<tr>
<td>Label 11</td>
<td>test data 11</td>
<td>Label 12</td>
<td>test data 12</td>
<td>Label 13</td>
<td>test data 13</td>
</tr>
<tr>
<td>Label 14</td>
<td colspan='5'>test data 14</td>
</tr>
</table>
Есть ли способ сгруппировать элементы таким образом, чтобы можно было создать группу для каждой группы для вывода каждой строки? Я слонялся с группой, но я не нашел хорошего способа сделать это. Правило будет состоять в том, чтобы разделить на группы все узлы от текущей точки до count = x (в приведенном выше примере это 3) или пока элемент не имеет атрибут singleRow.
Как вы думаете, элегантное решение этой проблемы?