2010-07-05 15 views
14

Se ho:Recupero XML nome di un elemento utilizzando T-SQL

<quotes> 
    <quote> 
    <name>john</name> 
    <content>something or other</content> 
    </quote> 
    <quote> 
    <name>mary</name> 
    <content>random stuff</content> 
    </quote> 
</quotes> 

Come ottengo una lista del 'nome' nomi degli elementi e 'contenuto' con T-SQL?

Il migliore che ho avuto finora è:

declare @xml xml 
set @xml = ... 
select r.value('quotes/name()[1]', 'nvarchar(20)' as ElementName 
from @xml.nodes('/quotes') as records(r) 

Ma, naturalmente, non posso arrivare a questo lavoro.

risposta

25

In realtà, mi spiace, il migliore che ho avuto è:

select distinct r.value('fn:local-name(.)', 'nvarchar(50)') as t 
FROM 
    @xml.nodes('//quotes/*/*') AS records(r) 

Indovinate ho risposto alla mia domanda ...

+0

Cordiali saluti, la soluzione è venuto da inciampare in questo post: http://stackoverflow.com/questions/2266132/how-can-i-get-a-list-of-element-names-from-an-xml-value-in -sql-server –

+0

La tua risposta va bene. Si consiglia inoltre di rivedere questa colonna per alcune utili ginnastica XML: http://beyondrelational.com/blogs/jacob/archive/2010/05/30/select-from-xml.aspx –

4
DECLARE @xml as xml 
SET @xml = '<Address><Home>LINE1</Home></Address>' 

SELECT Nodes.Name.query('local-name(.)') FROM @xml.nodes('//*') As Nodes(Name) 

Questo darà la lista di tutti gli elementi

Problemi correlati