我需要一些帮助才能将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>
答案 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
这种方法的优点:
缺点:
另一种选择是将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支持可能是您最好的选择。