Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/11/2013, 12:17
suprempada
 
Fecha de Ingreso: agosto-2004
Mensajes: 296
Antigüedad: 20 años, 6 meses
Puntos: 0
SQL SELECT FOR XML, elementos y atributos opcionales

Que tal a tod@s.

necesito obtener un xml desde sql con la sentencia FOR XML.

como ejemplo, este seria el xml que necesito:

<persona edad="34" nombre="juan perez" noIdentificacion="">
<direccion calle="Av. 54" noInterior="" noExterior=""/>
<afiliacion clave=""/>
</persona>

ya lo puedo obtener, pero mi pregunta es como puedo omitir los atributos y nodos que vinieran en blanco? es decir, si no tuviera el atributo noIdentificacion del nodo persona, o que en la DB estuviera vacio ese campo, como podria no poner el atributo noIdentificacion (igual para los atributos noExterior y noInterior de <direccion>) ? igual para el nodo afiliacion, si el atributo clave viniera en blanco, como podria no poner el nodo <afiliacion>? ya que no tendria sentido si no tiene el atributo clave.

que mi xml resultante fuera

<persona edad="34" nombre="juan perez">
<direccion calle="Av. 54"/>
</persona>


mi query es este:
Código SQL:
Ver original
  1. SELECT edad, nombre, noIdentificacion,
  2.           (SELECT calle, noInterior, noExterior
  3.            FROM direccion
  4.            FOR XML AUTO, TYPE
  5.            ) AS direccion,
  6.           (SELECT clave
  7.            FROM afiliacion
  8.            FOR XML AUTO, TYPE
  9.           ) AS afiliacion
  10. FROM Persona
  11. FOR XML AUTO, TYPE


Saludos y espero que me puedan ayudar.

Muchas gracias.

Última edición por gnzsoloyo; 21/11/2013 a las 15:30