sql - 如何根据XSD从数据库导出数据到xml

标签 sql xml xsd

我们有一个 XSD,我们想要一种根据 XSD 以 xml 格式导出数据的方法。数据现在在 SQL 数据库中,但我们使用 mysql 或其他数据库格式没有问题。我们需要将 XSD 与表数据进行映射,以便以 xml 格式导出它们。

最佳答案

知道了 from here

--创建与早餐菜单相关的测试表

CREATE TABLE Menus
(name varchar(255)
,price numeric(12,4)
,description varchar(1500)
,calories int);

--插入一些测试数据

Insert Into Menus Values ('eggs',22.22,'test description eggs',333);
Insert Into Menus Values ('steak',22.22,'test description steak',333);
Insert Into Menus Values ('big side of bacon',22.22,'test description bacon',333);
Insert Into Menus Values ('huge side of bacon',22.22,'test description more bacon',333);
Insert Into Menus Values ('OMG BACON!',22.22,'test description oh man, more bacon',333);

用于定义导出的 XSD 架构

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="breakfast_menu">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" name="food">
          <xs:complexType>
            <xs:sequence>
              <xs:element minOccurs="0" name="name" type="xs:string" />
              <xs:element minOccurs="0" name="price" type="xs:string" />
              <xs:element minOccurs="0" name="description" type="xs:string" />
              <xs:element minOccurs="0" name="calories" type="xs:unsignedShort" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

-- SQL生成文件

DECLARE @MenuSchema XML
SET @MenuSchema =   (      
SELECT * FROM OPENROWSET        
    (BULK 'C:\Menu.xsd', SINGLE_CLOB)            
        AS xmlData)
--create the schema for using later in the XML type
CREATE XML SCHEMA COLLECTION MenuSchema AS @MenuSchema;

DECLARE @xmlData XML (MenuSchema)
SET @xmlData =
            (SELECT
                [name]
                ,price
                ,[description]
                ,calories
            FROM
            dbo.Menus [food]
            FOR XML AUTO, ROOT ('breakfast_menu'), ELEMENTS)

SELECT @xmlData

关于sql - 如何根据XSD从数据库导出数据到xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35198240/

相关文章:

sql - 脚本问题Transact-SQL

java - 如何使用 JAXB 删除 XML 中的标签

android - 布局内部的 LinearLayout 与父级不匹配

xml - "extend"一个 xml 模式

c# - 在 .NET XML 反序列化中,如何允许数组类型的多态使用?

java - xsd shema gwt 模块使用什么?

mysql - 使用子选择提高查询速度?

sql - 帮助创建一个相当复杂的sql语句

xml - XSD 验证失败时的自定义错误消息

sql - 基于综合指数获取最新值(value)的更有效方法?