2010-09-28 7 views
1

J'utilise SQL Server 2005 pour extraire des données XML. J'apprécierais de l'aide pour extraire l'extrait XML suivant?Noeuds d'extraction XML SQL Server

<ELEMENT_A> 
    <CHILD_A _attribA="ABC"> 
     <CHILD_B Type="1"> 
      <CHILD_C> 
      <CHILD_D Type="1" Date="2010-08-31"> 
       <CHILD_E _attribB="M0"> 
        <CHILD_F>-0.32295</CHILD_F> 
       </CHILD_E> 
      </CHILD_D> 
     </CHILD_C> 
    </CHILD_B> 
    </CHILD_A> 
</ELEMENT_A> 

Comment puis-je obtenir les données dans le format tableau suivant? ELEMENT_A | _attribA | CHILD_A | CHILD_B | CHILD_C | CHILD_D | CHILD_E | CHILD_F

Note: J'aimerais utiliser les nœuds sélectionnés par ex. ce qui suit me donne la valeur du premier attribut:
sélectionnez v.value ('@_ attribA [1]', 'nvarchar (4)') de @ doc.nodes ('/ ELEMENT_A/CHILD_A') x (v)

Très apprécié, Merci.

+0

Vous avez oublié une balise de fermeture dans votre échantillon –

Répondre

0

J'espère que ce n'est pas trop tard pour vous. J'ai vu votre question juste aujourd'hui

select 
v.value('../../../../../@_attribA','nvarchar(4)') as _attribA 
,v.value('../../@Date','nvarchar(12)') as [Date] 
,v.value('../@_attribB','nvarchar(2)') as _attribB 
,v.value('.','float') as CHILD_F 
,v.query('../../../../..') as CHILD_A 

from @doc.nodes('/ELEMENT_A/CHILD_A/CHILD_B/CHILD_C/CHILD_D/CHILD_E/CHILD_F') x(v)