Wrappen und Entfernen von CDATA um XML

Das ist meine XML. Mein Ziel ist es, die Daten innerhalb des Value-Knotens beim Export mit CDATA zu umschließen und diese dann wieder in eine Spalte vom Typ Xml zu importieren, wobei CDATA entfernt wird.

<Custom>
     <Table>Shape</Table>
     <Column>CustomScreen</Column>
     <Value>Data</Value>
<Custom>

Im Moment ersetze ich 'Daten' im Werteknoten durch das XML aus der Tabelle und setze dann CData ein, wobei ShapeInfo XML und CustomPanel der erste Knoten von [ShapeInfo] XML ist.

SET @OutputXML= replace(@OutputXML, 'Data', CAST((SELECT [ShapeInfo]      
                         FROM [Shape] WHERE [Shape_ID] = @ShapeID) as VARCHAR(MAX))

SET @OutputXML= replace(@OutputXML, '<CustomPanel', '<![CDATA[<CustomPanel')

Aber das Ergebnis sieht ungefähr so aus, obwohl ich erwartet habe, dass es nur CDATA mit den Informationen enthält:

<Value>&lt;CustomPanel VisibilityIndicator=""&gt;&lText="No" Checked="False" Height="20" Width="50"/&gt;&lt;/Cell&gt;&lt;/Row&gt;&lt;/Table&gt;&lt;/CustomPanel&gt;</Value>

Dann mache ich einige dynamische SQL, um diese Spalte zu aktualisieren

EXEC('UPDATE ['+ @tableName +  '] SET [' + @columnName + '] = ''' + @nodeValue + ''' WHERE Shape_ID = ''' + @ShapeID + '''')

Mir wurde gesagt, dass ich CDATA möglicherweise mithilfe der folgenden Methoden entfernen kann, aber ich habe es nicht verwendet.

declare @x xml
set @x=N'<Value>&lt;CustomPanel....... all the current info ...=&quot;&quot;&gt;</Value>'

select @x.value('(/Value)[1]', 'nvarchar(max)')

select '<![CDATA[' + @x.value('(/Value)[1]', 'nvarchar(max)') + ']]'

Nach erneuter Überprüfung der Spalte scheint diese die richtigen Informationen zu enthalten. Ich habe es jedoch nie wieder von VARCHAR in XML geändert oder die CDATA-Symbole entfernt, obwohl sie beim Überprüfen der Spalte verschwunden zu sein scheinen. Was vermisse ich hier? Ist das eine richtige Vorgehensweise?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage