什么是从一些“不均匀”的XML构建db记录的最佳方法

时间:2012-04-11 08:19:25

标签: python mysql xml structure

我想要使用python中的lxml方法解析一些XML。解析了我希望能够比较一些结构化对象的元素(寻找delta)。

我需要解析大约50个XML文件,并且XML中的数据是“不均匀”形式(我不确定正确的名称是什么)。

简化示例XML:

<ID 1>
 <parameter A>
 <parameter B>
</ID 1>
<ID 2>
 <parameter A>
 <parameter B>
 <parameter C> 
</ID 2>
<ID 3>
 <parameter A>
</ID 3>

我如何创建一个合适的db(mySQL?)结构,我可以用它来通过ID隔离每个对象,并比较每个参数元素。

我不确定这是否合理 - 我用正确的术语并不是很好。

实际的源xml是此处列出的所有文件:http://www.nationalarchives.gov.uk/aboutapps/pronom/droid-signature-files.htm

这些文件是过去几年中已更新的相同结构的版本。我不需要DB中的所有XML元素,只需要一个子集,从版本号,发布日期开始,然后是在两个主要部分中找到的单个ID和字节模式。

将它推入mysql可能不是最好的前进方式,但我想如果我这样做,那么我会使用python / html前端来组合搜索/比较工具。

1 个答案:

答案 0 :(得分:1)

我的问题中的关键词是:'我不需要DB中的所有XML元素,只需要子集'

鉴于您可以预先知道要比较的子集的所有元素,我建议使用一个表,每个数据元素都有一列。这样可以更轻松地处理您对数据的后续报告要求。

通过逐行存储元素的另一种方法通常被认为是反模式,并且会使报告和比较变得更加困难。如果您事先不知道元素的类型(或数量),则需要比较这种策略。

编辑:为了更明确我认为该表会有列: ID,Paramater1,参数2,参数3,Parameter4 其中parameterx是您正在查看的“可比较参数”之一 - 对于其中许多列,列可能会保留为null,因为不存在此类参数。

然后,对于每个ID,该表中只有一个表和一行表。