我想要使用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前端来组合搜索/比较工具。
答案 0 :(得分:1)
我的问题中的关键词是:'我不需要DB中的所有XML元素,只需要子集'
鉴于您可以预先知道要比较的子集的所有元素,我建议使用一个表,每个数据元素都有一列。这样可以更轻松地处理您对数据的后续报告要求。
通过逐行存储元素的另一种方法通常被认为是反模式,并且会使报告和比较变得更加困难。如果您事先不知道元素的类型(或数量),则需要比较这种策略。
编辑:为了更明确我认为该表会有列: ID,Paramater1,参数2,参数3,Parameter4 其中parameterx是您正在查看的“可比较参数”之一 - 对于其中许多列,列可能会保留为null,因为不存在此类参数。
然后,对于每个ID,该表中只有一个表和一行表。