在DB中存储xml文件数据

时间:2011-06-17 14:51:54

标签: java xml database

我有一个xml文件,我想把它的内容存储在DB中。我的xml的格式不是固定的100% 我有xml文件,如下所示

   <Jb>
    <T1>false</T1>
    <T2>
        <email>dshetyo@adobe.com</email>
        <userName>passwd</clusterName>
        <passwd>adobe</clusterURL>
        <url>dummy</url>
        <param1>val </paramY>
            <paramN> val </paramN>

    </t2>

    <fx> 
        <a >351108</a>
        <b >4629  <b>
    </fx >
    </Jb>

我可以有N个参数,例如param1,param2等(N未修复)如何将其映射到相关表结构? 还有其他方法吗?

4 个答案:

答案 0 :(得分:2)

这是一对多关系。你会想要一个像这样的表:

account
  id
  email
  usernmae

parameters
  account_id
  param_key
  param_value

然后你的SQL看起来大致如下:

select * from account, parameters where account.id = parameters.account_id

或者,您也可以使用单个列来存储所有键值对。您可以将此作为长字符串或clob(取决于您认为更适合的性能以及您在尺寸方面的需求)

(所以需要额外的解析,但是如果你不想通过SQL选择参数,那么这就是你要去的方法)

答案 1 :(得分:0)

通常,XML内容存储在单个TEXTVARCHAR列的数据库中。

由于其自由形式结构,它通常不适合O / R映射。

答案 2 :(得分:0)

一种选择是将XML直接插入表中,然后使用XPath命令提取查询字段。主要数据库支持XPath:MySQLOraclePostgres ...

答案 3 :(得分:0)

Oracle拥有XMLDB,它们是基于XML进行搜索的XPath函数的实现。这意味着您可以将列定义为XMLType数据类型,并将模式附加/映射到此(这有助于验证以及随着时间的推移演变XML)。

MySQL中的

XML: http://dev.mysql.com/tech-resources/articles/xml-in-mysql5.1-6.0.html

MySQL似乎支持XPath函数,如前所述: http://dev.mysql.com/doc/refman/5.6/en/xml-functions.html

但请注意,MySQL中仍在开发这些功能。