Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

SQL SELECT FOR XML, elementos y atributos opcionales

Estas en el tema de SQL SELECT FOR XML, elementos y atributos opcionales en el foro de SQL Server en Foros del Web. 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" ...
  #1 (permalink)  
Antiguo 21/11/2013, 12:17
 
Fecha de Ingreso: agosto-2004
Mensajes: 296
Antigüedad: 19 años, 8 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
  #2 (permalink)  
Antiguo 21/11/2013, 12:20
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: SQL SELECT FOR XML, elementos y atributos opcionales

pero si los atributos van en blanco no te afecta en el XML, para que omitirlos???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/11/2013, 13:42
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: SQL SELECT FOR XML, elementos y atributos opcionales

(eliminado)
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog

Última edición por GeriReshef; 21/11/2013 a las 13:48 Razón: eliminado
  #4 (permalink)  
Antiguo 21/11/2013, 14:25
 
Fecha de Ingreso: agosto-2004
Mensajes: 296
Antigüedad: 19 años, 8 meses
Puntos: 0
Respuesta: SQL SELECT FOR XML, elementos y atributos opcionales

es requerimiento del usuario, que si los atributos o elementos no traen datos, que no aparescan.

entonces... alguien sabra como podria hacer esto?
  #5 (permalink)  
Antiguo 21/11/2013, 14:44
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: SQL SELECT FOR XML, elementos y atributos opcionales

Cita:
Iniciado por suprempada Ver Mensaje
es requerimiento del usuario, que si los atributos o elementos no traen datos, que no aparescan.

entonces... alguien sabra como podria hacer esto?
De saber y de lograrlo si, pero que obtengo yo a cambio???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: atributos, elementos, select, sql, xml
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:36.