Pregunta

My SQL es muy simple

seleccione ID como [Employee ID], EmpName como [nombre del empleado], Sal como [salario] de Emp FOR XML AUTO, ELEMENTOS, raíz ( 'clientes')

cuando lo ejecutaron a continuación que estoy recibiendo una salida en formato XML. la salida XML es

<customers>
<Emp>
  <Employee_x0020_ID>1</Employee_x0020_ID>
  <Employee_x0020_Name>Tridip</Employee_x0020_Name>
  <Salary>2500</Salary>
</Emp>
<Emp>
  <Employee_x0020_ID>2</Employee_x0020_ID>
  <Employee_x0020_Name>Ari</Employee_x0020_Name>
  <Salary>4000</Salary>
</Emp>
<Emp>
  <Employee_x0020_ID>3</Employee_x0020_ID>
  <Employee_x0020_Name>Dibyendu</Employee_x0020_Name>
  <Salary>3500</Salary>
</Emp>
</customers>

si u ver el nombre presentado xml entonces u puede entender que el nombre del campo es generado dinámicamente Debido al espacio. 1 esta se genera dinámicamente pero quiero que debe ser generado como 1 . quiero el espacio se debe mantener en el nombre XML presentado. así que por favor me diga qué hacer ........ gracias

¿Fue útil?

Solución

Aquí está la salida que busca que pretende ser XML. Ni siquiera será capaz de convertirlo a XML en cualquier programa de análisis (por lo menos no debería - no lo hará en SQL Server).

;with emp(ID, EmpName, Sal) as (select
    1, 'tridip', 2500 union all select
    2, 'ari', 4000)

select replace(convert(varchar(max),(
    select ID as [Employee ID], EmpName as [Employee Name], Sal as [Salary] 
    from Emp 
    FOR XML AUTO, ELEMENTS, ROOT('customers'))),
    '_x0020_', ' ')

Salida (reformateado para mayor claridad - SQL Server devuelve todo en una línea)

<customers><Emp><Employee ID>1</Employee ID><Employee Name>tridip
</Employee Name><Salary>2500</Salary></Emp><Emp>
<Employee ID>2</Employee ID><Employee Name>ari</Employee Name>
<Salary>4000</Salary></Emp></customers>

Otros consejos

elementos XML en W3Schools:

elementos XML deben seguir estas reglas de nomenclatura:

  • Los nombres pueden contener letras, números y otros caracteres
  • Los nombres no pueden comenzar con un número o carácter puntuacion
  • Los nombres no pueden comenzar con el xml cartas (o XML, o XML, etc.)
  • Los nombres pueden no contener espacios

Cualquier nombre se puede utilizar, no hay palabras están reservados.

(Énfasis añadido)

Creo que esta es la misma pregunta? FOR XML AUTO y el nombre de la columna con el problema de espacio en SQL Server 2005

La respuesta es la misma. No se puede tener un espacio en el nombre de una etiqueta XML.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top