I’ve got a table called StoreFolder that contains an XML field called FolderXml.
Each row contains an XML value like the following:
<Folder FolderName="test" StoreName="TestStore" />
I need to get the Folders in the following XML format:
<Folders>
<Folder FolderName="test1" StoreName="TestStore1" />
<Folder FolderName="test2" StoreName="TestStore1" />
<Folder FolderName="test3" StoreName="TestStore1" />
</Folders>
I’ve tried using the following SQL statement:
SELECT FolderXml
FROM StoreFolder
FOR XML PATH(''), ROOT('Folders')
But it outputs the following XML:
<Folders>
<FolderXml>
<Folder FolderName="test1" StoreName="TestStore1" />
</FolderXml>
<FolderXml>
<Folder FolderName="test2" StoreName="TestStore1" />
</FolderXml>
<FolderXml>
<Folder FolderName="test3" StoreName="TestStore1" />
</FolderXml>
</Folders>
Can someone please show me how to get the XML in the following format (using T-SQL):
<Folders>
<Folder FolderName="test1" StoreName="TestStore1" />
<Folder FolderName="test2" StoreName="TestStore1" />
<Folder FolderName="test3" StoreName="TestStore1" />
</Folders>
Many thanks
You are simply missing a convert/cast operation :
Your
FolderXmlfield is being treated as a varchar/nvarchar field, and then added inside an Xml node. Converting it to Xml beforehand ensure that it won’t be wrapped in a parent tag.