【问题标题】:SQL Server 2012 create Xml with default values from xsdSQL Server 2012 使用来自 xsd 的默认值创建 Xml
【发布时间】:2014-06-17 17:16:07
【问题描述】:

我已将一个包含 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 的默认值吗?

提前致谢。

【问题讨论】:

    标签: sql-server xml xsd


    【解决方案1】:

    对我来说幸运的是,我发现答案与上面的 select 语句混在一起。我只需要为数据添加带有“”的字段“field1”。

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

    做到了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 2014-10-24
      • 1970-01-01
      相关资源
      最近更新 更多