Мне нужно проанализировать файл XML и построить вывод данных на основе записей. Проблема заключается в том, что XML имеет «общую» форму, поскольку он имеет несколько уровней вложенных «узловых» элементов, которые представляют какую-то структуру данных. Мне нужно строить записи динамически на основе самого глубокого уровня элемента "узел". Некоторые примеры XML и ожидаемый результат находятся внизу.
Я самый знакомый с ElementTree в Python, поэтому я предпочел бы использовать это, но я просто не могу обернуться, чтобы динамически построить выходную запись на основе глубины динамического узла. Кроме того - мы не можем предполагать, что вложенные узлы будут иметь глубину 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