我需要解析一个 XML 文件并从数据中构建一个基于记录的输出。问题在于 XML 是一种“通用”形式,因为它有多层嵌套的“节点”元素,代表某种数据结构。我需要根据“节点”元素的最深层动态构建记录。一些示例 XML 和预期输出位于底部。
我最熟悉 w/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