Question

my sql est très simple

sélectionnez ID comme [ID employé], EmpName comme [Nom de l'employé], Sal comme [Salaire] de Emp FOR XML AUTO, ELEMENTS, RACINE ( ??'clients')

quand j'exécute ce sql alors je reçois une sortie au format XML. la sortie XML est

<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 voir le xml nom déposé alors u peut comprendre que le nom du champ est généré dynamiquement En raison de l'espace. 1 cela est généré dynamiquement, mais je veux qu'il doit être généré comme 1 . Je veux l'espace devrait être de maintenir le nom déposé xml. alors s'il vous plaît me dire quoi faire ........ merci

Était-ce utile?

La solution

Voici la sortie que vous recherchez qui se fait passer pour XML. Vous pourrez même pas être en mesure de le jeter à XML dans un analyseur (au moins il ne devrait pas - il ne sera pas dans 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_', ' ')

Sortie (reformaté pour plus de clarté - SQL Server renvoie tout sur une ligne)

<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>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top