Ignoriere den XML-Namespace in T-SQL

8

Wie entferne / ignoriere ich den XML-Namespace in einer XML-Datei, wenn ich die Daten mit T-SQL abfrage?

Ich lade eine XML-Datei in eine Variable und es funktioniert gut. Aber das XML hat einen Namespace gesetzt, und wenn ich es nicht entferne, sind meine Abfragen leer.

T-SQL:

%Vor%

XML-Beispiel:

%Vor%

Dies funktioniert, die Abfrage gibt Folgendes zurück:

  

1
  2
  3

Aber das XML enthält auch einen Standardnamespace:

%Vor%

Der xmlns="http://XXX" schraubt meine Anfrage komplett durch. Und leider ist das manuelle Ändern des XML vor dem Laden nicht wirklich eine Option.

Fragen:

  • Wie entferne oder ignoriere ich den Namespace, wenn ich die Daten in die Variable lade?
  • Oder wie ändere ich meine Abfrage, um den Namespace zu behandeln?
Jakob Gade 29.03.2011, 02:53
quelle

2 Antworten

19

Benutze einfach folgendes:

%Vor%

Mit WITH XMLNAMESPACES können Sie Namespace-Aliases für Ihre Abfragen definieren. Wenn Ihnen ein bestimmtes XML-Namespace-Präfix nicht wichtig ist, können Sie es einfach als DEFAULT namespace definieren und damit fertigstellen.

    
marc_s 29.03.2011, 04:53
quelle
3

Ich hatte in meiner XML-Abfrage dasselbe Problem. Namespace "xmlns="urn:tradefeed-xsd" hat ein Problem erzeugt und meine Abfrage ist leer.

%Vor%

Nachdem ich ;WITH XMLNAMESPACES(DEFAULT 'urn:tradefeed-xsd') statement vor meiner select-Anweisung verwendet habe, gibt es Daten zurück.

    
Ram 21.09.2012 14:15
quelle