Pregunta

Tengo una tabla de SQL Server 2005 como esta:

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

con datos que parecen CategoryIdParentCategoryIdCategoryDescription 123nullfoo345123bar

Me gustaría consultarlo en un documento xml como este:

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

¿Es posible hacer esto con FOR XML AUTO, ELEMENTS? ¿O debo utilizar FOR EXPLICIT XML?

¿Fue útil?

Solución

Es posible, pero la principal limitación es que los niveles de la jerarquía deben estar codificados. Los Libros en pantalla de SQL Server tienen una descripción de cómo representar jerarquías en XML en este enlace . A continuación se muestra una consulta de muestra que produce el XML que solicitó:

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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top