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