如何将xml文件转换为sql查询

时间:2015-03-28 20:01:16

标签: sql xml converter

我需要一些帮助才能将xml文件转换为sql查询文件。可以转换吗?

<mob_proto isOldStructure="false">
    <Mob vnum="101" name="??" localizedname="Cão Selvagem" type="0" rank="0" battle_type="0" level="1" event_type="0" mob_color="0" />
</mob_proto>

1 个答案:

答案 0 :(得分:2)

为了让您了解如何使用XSLT,请考虑以下样式表:

<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    <xsl:output method="text" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" />

    <xsl:template match="//Mob">
        SELECT * 
        FROM <xsl:value-of select="local-name()" /> 
        WHERE vnum = <xsl:value-of select="@vnum" />
            AND name = '<xsl:value-of select="@name" />'
    </xsl:template>

</xsl:transform>

这会将任何Mob元素转换为select查询,使用'Mob'作为表名,并过滤vnum和name作为列名。你可以在这里玩这个: http://xsltransform.net/nc4NzQA

这种方法的优点:

  • XSLT是一个定义良好的基于​​标准的语言,具有广泛的平台支持。
  • XSLT将非常巧妙地处理许多XML特定问题
  • 您可以将所有查询转换逻辑保留在一个地方

缺点:

  • 您的查询可能仅限于特定的语法/平台
  • XSLT很难学好,而且您的团队可能难以维护

另一种选择是将XML传递给数据库引擎。例如,如果您使用的是SQL Server,则可以编写一个采用XML参数的存储过程,然后使用OPENXML(https://msdn.microsoft.com/en-us/library/ms175160.aspx)来提取/解析发送的XML.Postgres还支持XML :http://www.postgresql.org/docs/9.1/static/functions-xml.html,和Mysql一样:http://dev.mysql.com/doc/refman/5.5/en/load-xml.html和Oracle我也很确定。

这种方法的优点:

  • 对于不熟悉XSLT的熟练SQL开发人员来说,学习曲线可能不会那么陡峭
  • 可以更轻松地将数据直接加载到数据库中(保持XML格式或将其分解为表格)

缺点:

  • 从一个数据库平台到另一个数据库平台,支持会有所不同
  • 可能会给您的数据库服务器带来额外的处理压力,这可能会被另一台机器上的XSLT处理器更有效地处理(特别是如果您正在处理复杂的文档结构)。

当然,您也可以使用任意数量的其他自定义实用程序来执行此操作,但XSLT或SQL XML支持可能是您最好的选择。