如何从某些“不平坦”的XML结构化数据库记录

2024-03-28 11:15:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用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>

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

我不确定这是否有意义-我对正确的术语不是很熟悉。你知道吗

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

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

把它放到mysql中可能不是最好的方法,但我想如果我这么做了,我会使用python/html前端来组合一个搜索/比较工具。你知道吗


Tags: 文件数据对象方法名称id数据库元素
1条回答
网友
1楼 · 发布于 2024-03-28 11:15:44

我在你的问题中的关键短语是:“我不需要数据库中的所有XML元素,只需要一个子集”

假设您可以预先知道要比较的子集的所有元素,我建议使用一个表,每个数据元素对应一列。这将使您更容易处理以后对数据的报告要求。你知道吗

另一种按行存储元素的方法通常被认为是反模式的,这将使报告和比较变得非常困难。如果您事先不知道要比较这种策略的元素的类型(或数量),那么就必须使用这种策略。你知道吗

编辑:更明确地说,我认为表应该有列: ID,参数1,参数2,参数3,参数4 其中parameterx是您正在查看的“可比较参数”之一—对于其中许多参数,列可能会保留为空,因为不存在此类参数。你知道吗

然后,整个表中只有一个表,每个ID在该表中只有一行

相关问题 更多 >