Ruby を使用して、ネットワーク グラフを表す gexf 形式の XML 構造を構築しています。グラフは、いくつかのレベルのネストされたノードで構成されます。アイデアは、次のようなファイルを解析することです。
| 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 の Builder などで可能なことはありますか?