2016-08-03 2 views
0

Я таблицу @t_myTable, которая содержит XMLs как этотПолучить XML в таблицу, которая содержит XMLs

------ 
1. <xml><.....></xml> 
2. <xml><.....></xml> 
3. <xml><.....></xml> 
------ 

Теперь, что я хочу, имея один XML, содержащий все эти XMLs. Я попытался решить эту проблему с этим запросом

SELECT myTable.Value 
FROM @t_myTable myTable 
FOR XML AUTO, ROOT ('XML')) 

но то, что я получаю это XML с большим количеством вложенных узлов, такого нам

<XML>     <- the XML root as I want 
    <myTable>   <- the name of the Table, useless in my XML 
    <Value>   <- the name of the column, useless in my XML 
     <xml>   <- the xml that I want to append to ROOT Node 
     ....   <- ecc. ecc. 

Так что я хочу спросить, как я могу сделать, чтобы минимизировать узлы в xml простейшим способом следующим образом:

<XML> 
    <xml> 
    ....... 
    </xml> 
    <xml> 
    ....... 
    </xml> 
<XML> 

???? Заранее спасибо за вашу поддержку

ответ

3

Попробуйте как этот

DECLARE @tbl TABLE(xml XML); 
INSERT INTO @tbl VALUES 
('<xml><a>Some a value</a></xml>') 
,('<xml><a>Another a value</a></xml>') 
,('<xml><a>And one more a value</a></xml>'); 

SELECT xml AS [*] 
FROM @tbl 
FOR XML PATH(''),ROOT('xml') 

Результат

<xml> 
    <xml> 
    <a>Some a value</a> 
    </xml> 
    <xml> 
    <a>Another a value</a> 
    </xml> 
    <xml> 
    <a>And one more a value</a> 
    </xml> 
</xml> 
Смежные вопросы