IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement SQL Server Discussion :

Parser un fichier XML


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut Parser un fichier XML
    Bonjour à tous,

    J'ai besoin de récupérer la valeur d'un attribut dans un fichier XML (dans l'exemple, il s'agit de la valeur en gras, balise ns2, valeur de l'attribut identifiant, c'est à dire 45433948


    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    declare @Xml xml
    set @Xml = '<ns2:rapport xmlns:ns2="http://www.gip-mds.fr/" message="En cas d absence de taux communiqué par la DGFIP, le taux applicable est le taux issu des grilles de taux par défaut définies par la loi de finances." version="v01r08" profil="TOPAZE" type="CRM nominatif" identifiant="45433948"><envoi><envoi_identification><idflux>413cdf994ee5c79b2fea5f40</idflux><emetteur_siret>55206819900033</emetteur_siret></envoi_identification><envoi_bilan><envoi_etat>OK</envoi_etat></envoi_bilan></envoi><declaration><declaration_identification><rang>1</rang><type>01</type><SIREN>552068199</SIREN><nic_affectation>00033</nic_affectation></declaration_identification><declaration_bilan><etat>OK</etat><declaration_contenu><salaries>1</salaries></declaration_contenu><salarie><NIR>4541899234221</NIR><taux_imposition_PAS>0.00</taux_imposition_PAS></salarie></declaration_bilan></declaration></ns2:rapport>'
    J'avais fait ça pour récupérer la valeur entre les balises <idflux></idflux>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT X.t.value('(./idflux/text())[1]', 'VARCHAR(50)') AS IdFlux
    INTO #PASRAU_CRM_TMP
    FROM @Xml.nodes('//envoi/envoi_identification') AS X(t)
    Merci d'avance,

    Sylvain

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    bonjour

    comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    WITH xmlnamespaces ('http://www.gip-mds.fr/' as ns2)
    select X.t.value('@identifiant[1]', 'INT') 
    FROM @Xml.nodes('//ns2:rapport') AS X(t)

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 8
    Par défaut
    Merci beaucoup,

    ça marche nickel !

    Juste une précision : il faut ajouter un ; avant le WITH xmlnamespaces, mais je ne sais pas pourquoi

    ;WITH xmlnamespaces ('http://www.gip-mds.fr/' as ns2)
    select X.t.value('@identifiant[1]', 'INT')
    FROM @Xml.nodes('//ns2:rapport') AS X(t)

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Par défaut
    Bonjour,

    En fait, c'est surtout qu'il faut ajouter un point virgule à la fin de l'instruction précédente.

    sans cela, le moteur ne peut différencier le WITH tel qu'il est utilisé ici, d'un WITH introduisant les options de la commande précédente.

    Le point virgule est donc requis dans le cas présent ainsi que dans certains autres (à la fin d'une instruction qui précède une CTE, à la fin d'une commande MERGE, ...)

    Pour le reste, même s'il n'est pas obligatoire, son absence est dépréciée depuis plusieurs version. il est possible qu'il devienne systématiquement obligatoire dans une prochaine version.

Discussions similaires

  1. problème pour parser un fichier xml avec XML::Simple
    Par black_code dans le forum Modules
    Réponses: 3
    Dernier message: 30/01/2006, 20h32
  2. [xslt] Parser 2 fichiers XML
    Par malekms dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/12/2005, 13h22
  3. Parser un fichier XML
    Par Charlinecha dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 11/07/2005, 18h18
  4. [SAX] parser un fichier xml en Java
    Par royou dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/02/2005, 18h12
  5. parser des fichier .xml en perl
    Par djibril dans le forum Modules
    Réponses: 13
    Dernier message: 18/05/2004, 18h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo