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

PL/SQL Oracle Discussion :

Extraction d'un XML


Sujet :

PL/SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 85
    Points : 62
    Points
    62
    Par défaut Extraction d'un XML
    Bonjour,

    J'ai un fichier XML que j'utilise et que je mets dans une variable dans une procédure stockée. Voici à quoi ressemble ce fichier :

    '<?xml version="1.0" encoding="UTF-8"?>
    <product name="DED2.1" creatationDate="24.06.2010" version="2.1">
    <addressingMode>
    <mode>STB_CA</mode>
    </addressingMode>
    <packageType>
    <type>CCT_TY</type>
    <type>OLD_TY</type>
    </packageType>
    </product>'


    Comment je fais pour extraire "DED2.1" et "2.1" de la ligne qui suit ?

    <product name="DED2.1" creatationDate="24.06.2010" version="2.1">


    J'utilise Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production !

    Merci.

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> With Data As (
      2   Select SYS.XMLTYPE('<?xml version="1.0" encoding="UTF-8"?>
      3                                <product name="DED2.1" creatationDate="24.06.2010" version="2.1">
      4                                <addressingMode>
      5                                <mode>STB_CA</mode>
      6                                </addressingMode>
      7                                <packageType>
      8                                <type>CCT_TY</type>
      9                                <type>OLD_TY</type>
     10                                </packageType>
     11                                </product>') x_el
     12     From dual
     13  )
     14    Select a.nom, a.version
     15       From Data t,
     16            XmlTable ('/product'
     17                     passing x_el
     18                     COLUMNS LigNo For ORDINALITY,
     19                             nom       Varchar2(10) Path '@name',
     20                             version   Varchar2(10) Path '@version'
     21                     ) a
     22  /
     
    NOM        VERSION
    ---------- ----------
    DED2.1     2.1
     
    SQL>

  3. #3
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut
    Mais quelle sont les conditions pour extraction ?
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 85
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> With Data As (
      2   Select SYS.XMLTYPE('<?xml version="1.0" encoding="UTF-8"?>
      3                                <product name="DED2.1" creatationDate="24.06.2010" version="2.1">
      4                                <addressingMode>
      5                                <mode>STB_CA</mode>
      6                                </addressingMode>
      7                                <packageType>
      8                                <type>CCT_TY</type>
      9                                <type>OLD_TY</type>
     10                                </packageType>
     11                                </product>') x_el
     12     From dual
     13  )
     14    Select a.nom, a.version
     15       From Data t,
     16            XmlTable ('/product'
     17                     passing x_el
     18                     COLUMNS LigNo For ORDINALITY,
     19                             nom       Varchar2(10) Path '@name',
     20                             version   Varchar2(10) Path '@version'
     21                     ) a
     22  /
     
    NOM        VERSION
    ---------- ----------
    DED2.1     2.1
     
    SQL>
    Alors en PL/SQL, en utilisant une partie du code ci-haut j'ai tenté ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select a.name, a.version
    into v_name, v_version
    from v_xml t
    xmltable ('/product'
                 passing v_xml
                 columns RowNo FOR ORDINALITY,
                              NAME VARCHAR2(10) Path '@name'
                              version VARCHAR2(10) Path '@version'
    où v_xml := xmltype(bfilename('REPO','vi_product_file_name', nls_charset_id('AL32UTF8'));
    et vi_product_name est le nom du fichier passé en paramètre à la procédure stockée.

    À la compilation, il y a une erreur sur la ligne du select.

    Merci pour votre réponse !

  5. #5
    Membre expérimenté
    Avatar de islamov2000
    Homme Profil pro
    Ingénieur d'études & developpement en informatique
    Inscrit en
    Septembre 2007
    Messages
    814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études & developpement en informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 814
    Points : 1 717
    Points
    1 717
    Billets dans le blog
    6
    Par défaut Manipulatin de xml avec sql
    Très bonne idée mnitu .
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

  6. #6
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par lcaya Voir le message
    où v_xml := xmltype(bfilename('REPO','vi_product_file_name', nls_charset_id('AL32UTF8'));
    et vi_product_name est le nom du fichier passé en paramètre à la procédure stockée.

    À la compilation, il y a une erreur sur la ligne du select.
    Essaye de simplifier le code et de nous dire aussi le message d'erreur.
    J'ai testé, ce code marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    DECLARE
    	v_xml XMLTYPE;
    	v_nom varchar2(100); v varchar2(100);
    BEGIN
     v_xml := XMLTYPE('<?xml version="1.0" encoding="UTF-8"?>
                                      <product name="DED2.1" creatationDate="24.06.2010" version="2.1">
                                      <addressingMode>
                                      <mode>STB_CA</mode>
                                      </addressingMode>
                                      <packageType>
                                      <type>CCT_TY</type>
                                      <type>OLD_TY</type>
                                     </packageType>
                                     </product>');
    SELECT nom, VERSION 
    INTO v_nom, v
    FROM   XMLTABLE ('/product'
                          PASSING v_xml
                         COLUMNS  nom       Varchar2(10) PATH '@name',
                                  VERSION   Varchar2(10) PATH '@version'
                          ) ;
        DBMS_OUTPUT.put_line(v_nom ||' '|| v);
    END;
    /
     
     
    DED2.1 2.1
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2009
    Messages : 85
    Points : 62
    Points
    62
    Par défaut
    Merci ! Le FROM était faux ! C'est effectivement bon !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Extraction de données xml sur un serveur avec extjs
    Par dasdo dans le forum Ext JS / Sencha
    Réponses: 1
    Dernier message: 30/07/2009, 20h03
  2. procedure stockee extraction donnees formatage xml
    Par phicarre dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/07/2009, 15h15
  3. Power AMC, extraction SGBD en xml
    Par saturne27 dans le forum PowerAMC
    Réponses: 1
    Dernier message: 17/01/2008, 10h49
  4. [XSLT] Extraction de fichiers XML pour traduction XSLT
    Par mhz42 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 23/11/2007, 14h03
  5. [XML][tinyXML] Problême d'extraction de données XML ac tinyxml
    Par Jahprend dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 19/03/2007, 09h35

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