SQL Server 2012使用xsd的默认值创建Xml

时间:2014-06-17 17:16:08

标签: sql-server xml xsd

我已经将包含258个元素的xsd导入到我的SQL Server 2012实例中。必须在最终的xml中存在所有258个元素。我遇到的问题是它们中的246个将包含在xsd中标识的默认值,而我不知道如何构造我的SQL以使用默认值填充xml。

以下是我创建的一个示例,它使用更小的xsd:

来说明我的问题
DROP XML SCHEMA COLLECTION TestSchema
GO
CREATE XML SCHEMA COLLECTION TestSchema AS 
'<schema xmlns="http://www.w3.org/2001/XMLSchema">
    <element name="document">
        <complexType>
            <sequence>
          <element minOccurs="0" name="field1" type="string" default="1" />
                <element name="field2" type="int" />
            </sequence>
        </complexType>
    </element>
</schema>'
GO
declare @xml xml(TestSchema) = null
declare @reccount table(recordcount int not null)
insert into @reccount select 32
set @xml =
(
    select
        recordcount as field2
    from
        @reccount
    for xml
        PATH('document')
)
select @xml

@xml的值是:

<document>
  <field2>32</field2>
</document>

我期待

<document>
  <field1>1</field1>
  <field2>32</field2>
</document>

我有什么想法可以生成field1的默认值吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

幸运的是,我遇到了上面的选择声明所愚弄的答案。我只需要为数据添加字段'field1'和''。

set @xml =
(
  select
    '' as field1,
    recordcount as field2
  from
    @reccount
  for xml
    PATH('document')
)

这样做了。