2

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

3 Answers 3

3

You are simply missing a convert/cast operation :

select Convert(Xml, FolderXml)
  from StoreFolder
for xml path(''), root('Folders')

Your FolderXml field 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.

Sign up to request clarification or add additional context in comments.

Comments

0
select FolderName as "@foldername",StoreName as "@StoreName"
FROM StoreFolder
FOR XML PATH('Folder'),ROOT('Folder')

1 Comment

It doesn't work as the XML data is stored in a field called FolderXml.
0
DECLARE @T TABLE(
    FolderXml XML
)

INSERT INTO @T VALUES
('<Folder FolderName="test1" StoreName="TestStore1" />'),
('<Folder FolderName="test2" StoreName="TestStore1" />'),
('<Folder FolderName="test3" StoreName="TestStore1" />')


SELECT (SELECT T.FolderXml)
FROM @T AS T
FOR XML PATH (''), ROOT('Folders')

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.