Parse XML in SQL Server Parse XML in SQL Server xml xml

Parse XML in SQL Server


DECLARE @xml xmlSET @xml = '<GespeicherteDaten><strategieWuerfelFelder Type="strategieWuerfelFelder">    <Felder X="3" Y="3" Z="3">        <Feld X="1" Y="1" Z="1">            <strategieWuerfelFeld Type="strategieWuerfelFeld">                <Name>Name</Name>                <Beschreibung>Test</Beschreibung>            </strategieWuerfelFeld>        </Feld>        <Feld X="1" Y="1" Z="2">            <strategieWuerfelFeld Type="strategieWuerfelFeld">                <Name>Name2</Name>                <Beschreibung>Test2</Beschreibung>            </strategieWuerfelFeld>        </Feld>    </Felder></strategieWuerfelFelder></GespeicherteDaten>'SELECT     b.value('@X', 'int') as X  , b.value('@Y', 'int') as Y  , b.value('@Z', 'int') as Z  , b.value('(./strategieWuerfelFeld/Name/text())[1]','Varchar(50)') as [Name]  , b.value('../@X','int') as Felder_X  , b.value('../@Y','int') as Felder_Y  , b.value('../@Z','int') as Felder_Z  FROM @xml.nodes('/GespeicherteDaten/strategieWuerfelFelder/Felder/Feld') as a(b) 


declare @XML xml set @XML = '<GespeicherteDaten>    <strategieWuerfelFelder Type="strategieWuerfelFelder">        <Felder X="3" Y="3" Z="3">            <Feld X="1" Y="1" Z="1">                <strategieWuerfelFeld Type="strategieWuerfelFeld">                    <Name>Name</Name>                    <Beschreibung>Test</Beschreibung>                </strategieWuerfelFeld>            </Feld>            <Feld X="1" Y="1" Z="2">                <strategieWuerfelFeld Type="strategieWuerfelFeld">                    <Name>Name2</Name>                    <Beschreibung>Test2</Beschreibung>                </strategieWuerfelFeld>            </Feld>        </Felder>    </strategieWuerfelFelder></GespeicherteDaten>'select Felder.N.value('@X', 'int') as Felder_X,       Felder.N.value('@Y', 'int') as Felder_Y,       Felder.N.value('@Z', 'int') as Felder_Z,       Feld.N.value('@X', 'int') as Feld_X,       Feld.N.value('@Y', 'int') as Feld_Y,       Feld.N.value('@Z', 'int') as Feld_Z,       Feld.N.value('(strategieWuerfelFeld/Name/text())[1]', 'nvarchar(100)') as Namefrom @XML.nodes('/GespeicherteDaten/strategieWuerfelFelder/Felder') as Felder(N)  cross apply Felder.N.nodes('Feld') as Feld(N)

Result:

Felder_X    Felder_Y    Felder_Z    Feld_X      Feld_Y      Feld_Z      Name----------- ----------- ----------- ----------- ----------- ----------- ---------3           3           3           1           1           1           Name3           3           3           1           1           2           Name2