XML ファイルを解析し、データからレコード ベースの出力を作成する必要があります。問題は、XML が「一般的な」形式であり、何らかのデータ構造を表すネストされた「ノード」要素がいくつかのレベルにあることです。「ノード」要素の最も深いレベルに基づいて、レコードを動的に構築する必要があります。XML の例と予想される出力を下に示します。
私はPythonのElementTreeに最も精通しているので、それを使用したいと思いますが、動的ノードの深さに基づいて出力レコードを動的に構築する方法に頭を悩ませることはできません。また、ネストされたノードが x レベルの深さになるとは想定できないため、ループを使用して各レベルをハードコーディングすることはできません。XML を解析してその場で出力を構築する方法はありますか?
いくつかの追加メモ:
- ノード名は、親と詳細情報 (レート、価格など) を除いてすべて「ノード」です。
- ノードの深さは静的ではありません。そのため、サンプルに表示されているよりもさらに多くのレベルを想定してください
- 各「レベル」には、複数のサブレベルを含めることができます。したがって、各レコードを適切に構築するには、各子「ノード」をループする必要があります。
任意のアイデア/入力をいただければ幸いです。
<root>
<node>101
<node>A
<node>PlanA
<node>default
<rate>100.00</rate>
</node>
<node>alternative
<rate>90.00</rate>
</node>
</node>
</node>
</node>
<node>102
<node>B
<node>PlanZZ
<node>Group 1
<node>default
<rate>100.00</rate>
</node>
<node>alternative
<rate>90.00</rate>
</node>
</node>
<node>Group 2
<node>Suba
<node>default
<rate>1.00</rate>
</node>
<node>alternative
<rate>88.00</rate>
</node>
</node>
<node>Subb
<node>default
<rate>200.00</rate>
</node>
<node>alternative
<rate>4.00</rate>
</node>
</node>
</node>
</node>
</node>
</node>
</root>
出力は次のようになります。
SRV SUB PLAN Group SubGrp DefRate AltRate
101 A PlanA 100 90
102 B PlanB Group1 100 90
102 B PlanB Group2 Suba 1 88
102 B PlanB Group2 Subb 200 4