【发布时间】:2014-06-10 04:41:48
【问题描述】:
我有大约 10,000 个 XML 文件,我需要将它们转换成 SQL 表。
但是,这里有一些问题,每个 XML 文件之间都有一些变化,因此我几乎不可能指定元素名称。例如:
//XML #1
<color>Blue</color>
<height>14.5</height>
<weight>150</weight>
<price>56.78</price>
//XML #2
<color>Red</color>
<distance>98.7</distance>
<height>15.5</height>
<price>56.78</price>
//XML #3: Some of the elements have no value
<color />
<height>14.5</height>
<price>78.11</price>
//XML #4: Elements has parent/child
<color>
<bodyColor>Blue</bodyColor>
<frontColor>Yellow</frontColor>
<backColor>White</backColor>
</color>
<height>14.5</height>
<weight>150</weight>
<price>56.78</price>
在上面的示例中,我应该期望使用columns 名称创建一个表:color, height, weight, price, distance(因为 XML #2 有距离)bodyColor, frontColor, backColor。
预期输出:
XML# color height weight price distance bodyColor frontColor backColor
1 Blue 14.5 150 56.78 NULL NULL NULL NULL
2 Red 15.5 NULL 56.78 98.7 NULL NULL NULL
3 NULL 14.5 NULL 78.11 NULL NULL NULL NULL
4 NULL 14.5 150 56.78 NULL Blue Yellow White
在这种情况下,可以接受 NULL 或空值。
这些只是示例,每个 XML 文件中至少有 500 个元素。另外,即使我在这里提到了 C#,如果有人可以提出更好的方法,请告诉我。
【问题讨论】:
-
获取文件以遵循某个 Xml 架构定义。标签可以为空或 NULL。存在标签很重要。然后使用该文件会更容易。
-
@abhi XML 模式定义是什么意思? (对不起,我对 XML 很陌生)
-
一种可能的解决方案是遍历每个 XML 文件并提取所有唯一字段并在数据库中创建一个包含所有提取的唯一字段的表。这样您就可以知道您拥有哪些字段,以便您以后可以考虑对表格进行规范化。
-
@Hituptony 我正要发帖same link。
-
您可以获得一个包含所有可能标签的示例文件。然后 Visual Studio 将为您创建 XSD。市场上还有其他工具在这个游戏中表现更好。想到 Altova XML SPY 和 Liquid。 2011 年,我正在从事一项非常相似的活动。
标签: c# sql sql-server xml