Я использую Ruby для создания XML-структуры в формате gexf, которая будет представлять сетевой граф. Граф состоит из нескольких уровней вложенных узлов. Идея состоит в том, чтобы проанализировать файл, который выглядит примерно так:
| top node | middle node | bottom node |
| a | 1 | "name1" |
| b | 1 | "name6" |
| a | 2 | "name3" |
| b | 2 | "name8" |
| b | 1 | "name5" |
| a | 1 | "name2" |
| b | 2 | "name7" |
| a | 2 | "name4" |
и преобразовать его в это:
<node id = a label = "top node">
<node id = 1 label = "middle node">
<node id = name1 label = "bottom node"/>
<node id = name2 label = "bottom node"/>
</node>
<node id = 2 label = "middle node">
<node id = name3 label = "bottom node"/>
<node id = name4 label = "bottom node"/>
</node>
</node>
<node id = b label = "top node">
<node id = 1 label = "middle node">
<node id = name5 label = "bottom node"/>
<node id = name6 label = "bottom node"/>
</node>
<node id = 2 label = "middle node">
<node id = name7 label = "bottom node"/>
<node id = name8 label = "bottom node"/>
</node>
</node>
Как видите, поскольку строки в файле не расположены в определенном порядке, мне нужно иметь возможность ссылаться на каждый узел и подузел при построении XML-файла.
Если мой вопрос все еще не ясен, когда я читаю строку:
| b | 1 | "name6" |
Мне нужно, чтобы строитель вставил этот узел "name6" в "верхний узел b" и "средний узел 1". Возможно ли это вообще с помощью Builder или Nokogiri's builder или чего-то еще?