用CSV表示XML:处理子标签的建议

时间:2012-05-24 13:46:33

标签: xml csv data-structures

我正在构建数据可视化,我想使用CSV作为我的基本数据格式,以实现轻松和易用性。我的源数据是重XML,因此我使用Python和lxml将其转换为CSV。

我的问题是这个。当我在XML中有多个子标记时,如下面的<City>标记:

<Country>
   <Name>France</Name>
   <Cities>
   <City><Name>Paris</Name></City>
   <City><Name>Lyon</Name></City>
   </Cities>
</Country>
<Country>
   <Name>Germany</Name>
   <Cities>
   <City><Name>Berlin</Name></City>
   <City><Name>Munich</Name></City>
   <City><Name>Aachen</Name></City>
   </Cities>
</Country>

我应该如何在CSV文件中表示它们?我可以想到两个选择。第一种是为每个城市添加一列,直至CityN:

 Country,City1,City2,City3
 France,Paris,Lyon,,
 Germany,Berlin,Munich,Aachen

第二种方法是为所有城市使用数组:

 Country,Cities
 France,[Paris,Lyon]
 Germany,[Berlin,Munich,Aachen]

最好的格式可能取决于我想查询数据的方式,但我想我会在这里查看是否有一个完善的或更好的方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

鉴于您要使用CSV,阵列版本更优越,可以保留文档的基于字段的结构。如果没有数组命名法,逗号将作为字段分隔符和字段分隔符中的值重载,除非通过计算记录左侧的字段,否则无法确定哪个正在播放。

非阵列版本还会将您的数据限制为每个记录类型的一个嵌套集合。这不是当前示例中的问题,但可以是应用程序中的其他记录类型。使用(单一)标准方法可提高清晰度和可维护性。