Saltar al contenido

XML ORACLE DB

Con  «XML ORACLE» podemos generar cadenas XML a partir de registros de una select.

XMLElement sirve para generar un elemento XML por cada registro recuperado.

select xmlElement(”Título”, post_title) from menu;

<Título>Resumen Java – Modificadores de Acceso.</Título>

<Título>Resumen Java – Tipos de Variables.</Título>

<Título>Super Bluetooth Hack</Título>

<Título>Password – Ubuntu </Título>

<Título>Ubuntu – Beryl</Título>

<Título>Clase System</Título>

<Título>ACCEDER AL IPOD TOUCH MEDIANTE FTP</Título>

<Título>Java</Título>

<Título>Ubuntu</Título>

<Título>Iphone</Título>

Si queremos poner atributos a los elementos  utilizaremos XMLAttributes:

select xmlElement(”Título”, XMLAttributes(idmenu as NIVEL),

xmlElement(”Nombre”, post_title)) from menu

order by idMenu

<Título NIVEL=”1″><Nombre>Java</Nombre></Título>

<Título NIVEL=”2″><Nombre>Ubuntu</Nombre></Título>

<Título NIVEL=”3″><Nombre>Iphone</Nombre></Título>

<Título NIVEL=”4″><Nombre>Resumen Java – Modificadores de Acceso.</Nombre></Título>

<Título NIVEL=”5″><Nombre>Resumen Java – Tipos de Variables.</Nombre></Título>

<Título NIVEL=”6″><Nombre>Super Bluetooth Hack</Nombre></Título>

<Título NIVEL=”7″><Nombre>Password – Ubuntu </Nombre></Título>

<Título NIVEL=”8″><Nombre>Ubuntu – Beryl</Nombre></Título>

<Título NIVEL=”9″><Nombre>Clase System</Nombre></Título>

<Título NIVEL=”10″><Nombre>ACCEDER AL IPOD TOUCH MEDIANTE FTP</Nombre></Título>

Si uno de los registros tiene un valor nulo, nos lo devolverá vacío de esta manera:

<Título NIVEL=”1″><Nombre></Nombre></Título>

Para evitarlo utilizaremos XMLForest, permite realizar consultas de forma más compacta y omite los que son nulos pero no admite la utilización de atributos.

select xmlElement(”Título”, XMLAttributes(idmenu as NIVEL),

xmlForest(post_title as “Name”,

url as “URL”)) from menu

order by idMenu

XMLAGG es una función de agregación. A partir de una colección de fragmentos XML, devuelve un único documento agregado.

Devolveremos en cada elemento TITULO todos los nombres que pertenezcan al mismo idRelacion.

select xmlElement(”Título”,

xmlAgg(xmlElement(”Name” ,post_title,

“URL” ,url)) )

from menu

group by idRelacion

<Título><Name>Resumen Java – Modificadores de Acceso.</Name><Name>Clase System</Name></Título>

<Título><Name>Password – Ubuntu </Name><Name>Ubuntu – Beryl</Name></Título>

<Título><Name>Super Bluetooth Hack</Name><Name>ACCEDER AL IPOD TOUCH MEDIANTE FTP</Name></Título>

<Título><Name>Resumen Java – Tipos de Variables.</Name></Título>

<Título><Name>Java</Name><Name>Iphone</Name><Name>Ubuntu</Name></Título>

Podéis encontrar mucha más información en:

http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14200/toc.htm