Domanda

My SQL è molto semplice

selezionare ID come [ID impiegato], EmpName come [Nome dipendente], Sal come [Stipendio] dal Emp FOR XML AUTO, ELEMENTI, ROOT ( 'clienti')

quando eseguo questo sql poi io sono sempre in uscita in formato XML. l'output XML è

<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>

se u vedere il nome depositato xml allora la u può capire che il nome del campo viene generato dinamicamente a causa di spazio. 1 questo è generato dinamicamente ma voglio che dovrebbe essere generato come 1 . Voglio spazio dovrebbe essere mantenere in nome xml archiviato. quindi per favore mi dica cosa fare ........ grazie

È stato utile?

Soluzione

Ecco l'output siete alla ricerca di che finge di essere XML. Non sarà nemmeno in grado di lanciare a XML in qualsiasi parser (almeno non dovrebbe - non lo farà in 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_', ' ')

Output (riformattato per chiarezza - SQL Server restituisce il tutto su una riga)

<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>

Altri suggerimenti

elementi XML a W3Schools:

elementi XML devono seguire queste regole di denominazione:

  • I nomi possono contenere lettere, numeri e altri caratteri
  • I nomi non possono iniziare con un numero o punteggiatura carattere
  • I nomi non possono iniziare con il xml lettere (o XML, o XML, etc)
  • I nomi non possono contenere spazi

Ogni nome può essere utilizzato, non parole sono riservate.

(enfasi aggiunta)

Credo che questo è la stessa domanda? FOR XML AUTO e nome della colonna con problemi di spazio in SQL Server 2005

La risposta è la stessa. Non si può avere uno spazio in un nome di tag XML.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top