Pergunta

Eu tenho uma tabela SQL Server 2005 como isto:

create table Taxonomy(
CategoryId integer primary key,
ParentCategoryId integer references Taxonomy(CategoryId),
CategoryDescription varchar(50) 
)

com os dados parecendo CategoryIdParentCategoryIdCategoryDescription 123nullfoo345123bar

I'd like to query it into an xml document like this:

<taxonomy>
<category categoryid="123" categorydescription="foo">
      <category id="455" categorydescription="bar"/>
</category>
</taxonomy>

É possível fazer isso com FOR XML AUTO, elementos? Ou eu preciso usar FOR XML EXPLICIT?

Foi útil?

Solução

É possível, mas a principal limitação é que os níveis da hierarquia deve ser codificado. O Books Online SQL Server tem uma descrição de como representar hierarquias em XML em este link . Abaixo está uma consulta de exemplo que produz o XML que você solicitou:

SELECT [CategoryId] as "@CategoryID"
      ,[CategoryDescription] as "@CategoryDescription"
      ,(SELECT [CategoryId]
       ,[CategoryDescription]
       FROM [dbo].[Taxonomy] "Category"
       WHERE ParentCategoryId = rootQuery.CategoryId
       FOR XML AUTO, TYPE)
FROM [dbo].[Taxonomy] as rootQuery
where [ParentCategoryId] is null
FOR XML PATH('Category'), ROOT('Taxonomy')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top