我有一個複雜的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()'是你最好的選擇。 –