我有一个复杂的XML结构,我想从数据库中的单个表创建。我设法像5个不同的节点添加如下:FOR XML EXPLICIT - 需要一种聪明的方式来查询XML
SELECT 1 AS Tag
,NULL AS Parent
,NULL AS [Document-OrderResponse!1]
,NULL AS [OrderResponse-Header!2]
,NULL AS [OrderResponseType!3]
,NULL AS [OrderResponseNumber!4]
,NULL AS [OrderResponseDate!5]
,NULL AS [OrderNumber!6]
,NULL AS [DocumentFunctionCode!7]
,NULL AS [DetailsOfTransport!8]
,NULL AS [TermsOfDelivery!9]
UNION ALL
SELECT 2 AS Tag
,1 AS Parent
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
UNION ALL
SELECT 3 AS Tag
,2 AS Parent
,NULL
,NULL
,'Type'
,NULL
,NULL
,NULL
,NULL
,NULL
,NULL
UNION ALL
SELECT 4 AS Tag
,2 AS Parent
,NULL
,NULL
,NULL
,'Number'
,NULL
,NULL
,NULL
,NULL
,NULL
UNION ALL
SELECT 5 AS Tag
,2 AS Parent
,NULL
,NULL
,NULL
,NULL
,'Date'
,NULL
,NULL
,NULL
,NULL
FOR XML explicit
最后文件将被更多的嵌套,并有将是大约15多个值。如果我继续构建这样的查询,它将只有几页。帮助我重新创建它。
结果看起来是这样的(不换行和缩进):
<Document-OrderResponse>
<OrderResponse-Header>
<OrderResponseType>Type</OrderResponseType>
<OrderResponseNumber>Number</OrderResponseNumber>
<OrderResponseDate>Date</OrderResponseDate>
</OrderResponse-Header>
</Document-OrderResponse>
我会去尝试,用标准的C#LINQ /的XElement构建生成输出CLR过程,假设在你的环境中的一个选项。 – MarcE
我宁愿不这样做,因为我对这些技术没有经验。我猜它在SQL中很容易实现,但是我错过了一些东西。也许我应该把数据放到不同的表格中并使用FOR XML AUTO,ELEMENTS? – BuahahaXD
'FOR XML PATH()'是你最好的选择。 –