Nejčastěji odpovídající uživatel
SQL dotaz do XML

Dotaz
-
Dobry den, potřeboval bych vědět jak lze upravit kod : declare @xml xml; select @xml = (select * from (select 'Josef' as jmeno, 10 as pocet union all select 'Pavel' , null )a FOR XML PATH , TYPE, ELEMENTS XSINIL, ROOT('Ham') ); select @xml kdy výsledek je následující: <Ham xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <row> <jmeno>Josef</jmeno> <pocet>10</pocet> </row> <row> <jmeno>Pavel</jmeno> <pocet xsi:nil="true" /> </row> </Ham> Tento XML vysledek nevyhovuje automatu na který chci data posílat, potřebuji odstarnit tyto údaje v(root) <Ham xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> potřebuji pouze <Ham> bez xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance ve sloupku(pocet) v případě null hodnoty <pocet xsi:nil="true" /> potřebuji pouze <pocet /> bez xsi:nil="true" takže by výsledek vypadal takto <Ham> <row> <jmeno>Josef</jmeno> <pocet>10</pocet> </row> <row> <jmeno>Pavel</jmeno> <pocet /> </row> </Ham> Za případnou radu děkuji JB
Odpovědi
-
Zatím jsem se dostal jenom k tomu, jak z výsledného XML odstranit atribut xsi:nill:
SET @xml.modify(' declare namespace NS="http://www.w3.org/2001/XMLSchema-instance"; delete(//*/@NS:nil) ')
Teď ještě zrušit tu deklaraci jmenného prostoru v kořenovém prvku.
Boris Lehečka (Word, Access, VBA, XML, C#, SQL)- Označen jako odpověď JastebMicrosoft contingent staff, Moderator středa 16. června 2010 11:40
Všechny reakce
-
Zatím jsem se dostal jenom k tomu, jak z výsledného XML odstranit atribut xsi:nill:
SET @xml.modify(' declare namespace NS="http://www.w3.org/2001/XMLSchema-instance"; delete(//*/@NS:nil) ')
Teď ještě zrušit tu deklaraci jmenného prostoru v kořenovém prvku.
Boris Lehečka (Word, Access, VBA, XML, C#, SQL)- Označen jako odpověď JastebMicrosoft contingent staff, Moderator středa 16. června 2010 11:40
-
-
dobrý den, jedna z možností jak to udělat, pokud netrváte na nutnosti použít xml parser, je:
declare @xml xml; select @xml = (select * from (select 'Josef' as jmeno, 10 as pocet union all select 'Pavel' , null )a for xml path , type, elements xsinil, root('Ham') ); select cast( replace( replace( cast (@xml as nvarchar(max)) ,'xsi:nil="true"','') ,' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"','') as xml) as newXml