19 Stimmen

Abrufen von XML-Elementnamen mit t-SQL

Wenn ich es habe:

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

Wie erhalte ich mit T-SQL eine Liste der Elementnamen "name" und "content"?

Das Beste, was ich bis jetzt habe, ist:

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

Aber natürlich kann ich das nicht zum Laufen bringen.

35voto

Matt W Punkte 10737

Tut mir leid, aber das Beste, was ich habe, ist:

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

Ich schätze, ich habe meine eigene Frage beantwortet...

5voto

Susmeet Khaire Punkte 51
DECLARE @xml as xml
SET @xml = '<Address><Home>LINE1</Home></Address>'

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

Dies ergibt die Liste aller Elemente

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X