Mitt problem är att jag får en XMLsträng från en leverantör och när jag kör denna i min stored procedure Hmm.. de skickar ju invalid XML till dig, det borde du kunna klaga på tycker jag. Finns det någon kodsnutt för att sätta in en ntext sträng i en TEMP-table för att sedan ersätta tecken via UPDATETEXT och sen lägga tillbaka det i en ntext för att köra sp_xml_preparedocument Ogiltiga tecken iXMLsträng
med sp_xml_preparedocument @hDoc output, @ITEM_Telegram där @ITEM_Telegram är av typen ntext så får jag felet "XML parsing error: A name was started with an invalid character." i detta fallet fanns det ett &-tecken bland XML och det tecknet är inte tilllåtet i en XML sträng. Jag har prövat att byta encoding till bl a UTF-16 m fl men får då att det inte är tillåtet att byta encoding. Finns det något sätt att byta encodong eller något annat sätt att ta emot de otillåtna tecknen utan att behöva byta dem mot & Sv: Ogiltiga tecken iXMLsträng
Om du ändå blir tvungen att tvätta datat och du vill göra det i en sproc tror jag att du behöver göra något i stil med detta:
Skapa en temp-table.. (declare .. är snabbast)
Sätt in texten i temp-tablen.
använd UPDATETEXT för att ändra i texten..
http://doc.ddart.net/mssql/sql70/ua-uz_5.htm
Plocka ut texten från temp table, ta bort temp-table.
Encoding har inte med saken att göra :)
& är ett specialtecken i XML som används för att "escape:a" vissa tecken
genom tecken-entiteter t.ex & < >
Så om man t.ex skriver <xml> & </xml> så är det per defintion inte XML.Sv:Ogiltiga tecken iXMLsträng
Ps lite bråttom så därför frågar jag om någon kan ge mig den genvägen DS.