2017-08-24 1 views
1

Ich teste dieses einfache Skript und frage mich nur, warum es nicht funktioniert hat.Extrahieren von Daten aus XML-Knoten

DECLARE @myDoc xml 
DECLARE @ProdID int 

SET @myDoc = 
    '<Datatype xmlns="V8_0_1" id="113" name="PF_CleaningMode" hdl="47/4/SB8_3-910-8243-19/0/113" odobjid="915"> 
     <Datatypevalue id="2" name="Intermittent" /> 
     <Datatypevalue id="1" name="Continuous" /> 
     <Datatypevalue id="0" name="Off" /> 
    </Datatype>' 

SET @ProdID = @myDoc.value('(Datatype/@id)[1]', 'int') 
SELECT @ProdID 

Ich hoffe, Sie können helfen. Vielen Dank.

Antwort

1

Sie sind nur einfach den Standard-XML-Namespace zu ignorieren, die auf Ihrem <Datatype> Knoten definiert ist:

<Datatype xmlns="V8_0_1" id="113" name="PF_CleaningMode" 
      ************** 

Sie müssen schließen, dass in Ihrer Anfrage!

So:

;WITH XMLNAMESPACES(DEFAULT 'V8_0_1') 
SELECT @myDoc.value('(Datatype/@id)[1]', 'INT') 

und Sie werden die erwartete Ausgabe von

113 
+0

Danke erhalten! ... mir ist nicht bewusst, dass ich NameSpace in mein Skript aufnehmen muss. Es funktioniert jetzt. – user3015739