使用xs:element命名空间标签以xml格式选择SQL Server表内容

时间:2018-08-30 14:55:31

标签: sql-server xml tsql

我正在尝试创建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>

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

1 个答案:

答案 0 :(得分:0)

如评论中所述,您可以获得与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 AUTO换成XML 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