Kreiranje XML-a iz SQL tabele

Objavljeno: 05-02-2014 | Autor: Žana (Jovana) Baćović | Kategorija: T-SQL, XML

1

Ako želite da kreirate jednostavan XML koristeći podatke iz SQL tabele, to možete da uradite koristeći XML Path mod u FOR XML klauzuli.

Primjer: Prikazivanje svih crtanih filmova iz Kefalo baze, sa zaglavljem SpisakCrtaca možete da uradite na sledeći način:

SELECT Naziv
FROM dbo.CrtaniFilmovi
FOR XML PATH(""),ROOT("SpisakCrtaca"),TYPE

Kreiranje XML-a sa hijerarhijom

Ukoliko želite da kreirate XML koji sadrži ugnježdene elemente, jedan od načina je da koristite AUTO mod u FOR XML klauzuli.

Primjer: Prikazivanje svih epizoda crtanih filmova iz Kefalo baze, pri čemu se na prvom nivou hijerarhije nalazi crtani film dok se This is due to the complexity of recovering best free data recovery software from a USB PCB hard drive, as it does not have the standard SATA or IDE interface on the PCB. na drugom nivou prikazuju epizode odgovarajućeg crtanog filma:

SELECT Crtac.Naziv, Epizoda.EpizodaID, Epizoda.Naziv,Epizoda.GodinaPremijernogIzvodjenja
FROM dbo.CrtaniFilmovi Crtac
INNER JOIN dbo.CrtaneEpizode Epizoda ON Epizoda.CrtacID = Crtac.CrtacID
ORDER BY Crtac.CrtacID
FOR XML AUTO,ELEMENTS,TYPE

Prikazivanje svih kolona sa drugog nivoa u jednom redu (u prethodnom primjeru su to kolone EpizodaID, Naziv i GodinaPremijernogIzvodjenja) je moguće ukoliko se u prethodnom upitu izostavi atribut ELEMENTS:

SELECT Crtac.Naziv, Epizoda.EpizodaID, Epizoda.Naziv,Epizoda.GodinaPremijernogIzvodjenja
FROM dbo.CrtaniFilmovi Crtac
INNER JOIN dbo.CrtaneEpizode Epizoda ON Epizoda.CrtacID = Crtac.CrtacID
ORDER BY Crtac.CrtacID
FOR XML AUTO,TYPE

Ako želite da dodate zaglavlje svom XML fajlu, onda dodate na kraju PATH mod, sa ROOT argumentom:

SELECT
(
SELECT Crtac.Naziv, Epizoda.EpizodaID, Epizoda.Naziv,Epizoda.GodinaPremijernogIzvodjenja
FROM dbo.CrtaniFilmovi Crtac
INNER JOIN dbo.CrtaneEpizode Epizoda ON Epizoda.CrtacID = Crtac.CrtacID
ORDER BY Crtac.CrtacID
FOR XML AUTO,ELEMENTS,TYPE)
FOR XML PATH(""),ROOT("KefaloBaza"),TYPE

Na isti način možete da dodate proizvoljan broj nivoa, koji mogu da predstavljaju neku vrstu naslova odnosno zaglavlja.
Za kompleksnije XML strukture možete da koristite EXPLICIT mod sa FOR XML klauzulom, koji daje veću kontrolu i fleksibilnost u izgledu hijerarhije u odnosu na AUTO mod.

Komentari (1)

[…] smo objasnili kako se tabela ili rezultat nekog upita mogu pretvoriti u XML. Kao mala dopuna tog članka, danas ćemo prikazati i trik kako se svaki red tabele može […]