首页 > 解决方案 > 使用 xs:element 命名空间标签选择 xml 格式的 SQL Server 表内容

问题描述

我正在尝试创建 SQL 代码,将表的结果动态转换为类似于下面显示的 XML 格式,但到目前为止还没有找到这样做的方法。

表格样本:

key name   age   
---------------
1   Anakin 23  
2   jill   40  

XML

<xs:element name="person">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="key" type="xs:int" minOccurs="0" />
            <xs:element name="name" type="xs:string" minOccurs="0" />
            <xs:element name="age" type="xs:int" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>
</xs:element>

有什么建议或阅读材料可以提供帮助吗?

标签: sql-serverxmltsql

解决方案


如评论中所述,您可以获得简单的元素输出,就像FOR XML PATH ('person')

要生成符合的架构和 xlm,请从这里开始:

create table person
  ([key] int,
   [name] varchar(50),
   [age] int);
go

insert into person values (1, 'Anakin', 23),(2, 'Jill', 40);
go

select * from person FOR XML AUTO, ELEMENTS, XMLSCHEMA;

如果您需要显式的元素名称或模式名称,则需要替换XML AUTOwithXML EXPLICIT并提供您自己的模式文档。

更多信息在inline XSD这里: https ://docs.microsoft.com/en-us/sql/relational-databases/xml/generate-an-inline-xsd-schema?view=sql-server-2017

更多信息在XML EXPLICIT这里: https ://docs.microsoft.com/en-us/sql/relational-databases/xml/use-explicit-mode-with-for-xml?view=sql-server-2017


推荐阅读