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

Import/Export Oracle Discussion :

encoding UTF-8 avec XMLelement


Sujet :

Import/Export Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 25
    Points : 16
    Points
    16
    Par défaut encoding UTF-8 avec XMLelement
    Bonjour,

    j'ai voulut me créer une petite procédure PL/SQL pour générer quotidiennement des données sous format XML.

    Cela fonctionne magnifiquement ... si ce n'est la balise d'entête qui malgrès mon code

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
      SELECT XMLROOT (
    	XMLELEMENT ( "ROOT"
    		,XMLELEMENT ( "regions"
    			,XMLELEMENT ( "region"  , XMLATTRIBUTES ( ls_region AS "name" ) 
    				,XMLELEMENT ( "patient_all" 
    					,XMLAGG	(XMLELEMENT ( "patient"
    								,XMLELEMENT ( "FAY_SEQ_NO",a)
    								,XMLELEMENT ( "REF_NO",b)
    								,XMLELEMENT ( "NAT",c)
    								,XMLELEMENT ( "Nom",d)
    								,XMLELEMENT ( "PRENOM",e)
    								,XMLELEMENT ( "DAT_NAISSANCE",f)
    								,XMLELEMENT ( "SEX",g)
    								,XMLELEMENT ( "PHONE_NO",h)
    								,XMLELEMENT ( "GSM",i)
    								,XMLELEMENT ( "POURCENT_HANDIC",j)
    								,XMLELEMENT ( "BIM",k)
    								,XMLELEMENT ( "STT_SEQ_NO",l)
    								,XMLELEMENT ( "HOUSE_NO",m)
    								,XMLELEMENT ( "BOX",n)
    								,XMLELEMENT ( "COMMUNE",o)
    								,XMLELEMENT ( "CP",p)
    								,XMLELEMENT ( "PAYS",q)
    								,XMLELEMENT ( "MUT_SEQ_NO",r)
    								,XMLELEMENT ( "MUTUELLE",s)
    								,XMLELEMENT ( "DOC_SEQ_NO",t)
    								,XMLELEMENT ( "SERV_SEQ_NO",u)
    								,XMLELEMENT ( "SERVICE",v)
    								)
    							)
    					)
    				)
    			)
    			,XMLELEMENT ( "streets_all"	
    				,XMLAGG	(XMLELEMENT ( "street"
    							,XMLELEMENT ( "STREET_SEQ_NO",aa)
    							,XMLELEMENT ( "NOM_RUE",bb)
    							,XMLELEMENT ( "COMMUNE_SEQ_NO",cc)
    									)
    						)
    						)
    				), version '1.0" encoding="UTF-8'
     )
      INTO   lv_xml
    from tmp_new_pat;
    La balise du résultat obtenu est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="US-ASCII" ?>
    et cela reste quelque soit ce que je stipule dans la version.

    J'ai finallement généré mon fichier par un autre biais, mais si quelqu'un pouvait m'expliquer le POURQUOI afin que je ne meures pas complètement idiot, cela me ferai plaisir.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 388
    Points
    18 388
    Par défaut
    Vous êtes sûr de ne pas avoir un retraitement derrière, car c'est vraiment du texte libre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select XMLRoot(XMLElement("Dummy", dummy), version 'j''écris ce que je veux') as tt
      FROM dual;
     
    <?xml version="j'écris ce que je veux"?>
    <Dummy>X</Dummy>
    Sinon intéressez-vous à la fonction XMLForest, vous pourrez réduire significativement la longueur de votre code.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 25
    Points : 16
    Points
    16
    Par défaut
    N'étant pas (et de loin) un spécialiste de l'XML, je me suis inspiré d'un exemple trouvé sur internet.

    La suite du code est la suivante:
    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
      lv_blob := XMLTYPE.GetBlobVal ( lv_xml , 1 );
      lv_len := DBMS_LOB.GetLength ( lv_blob );
      lv_x := lv_len;
      lv_output := UTL_FILE.FOpen ( 'C:\FICHIERS_XML' , ls_filename , 'WB' , 32760 );  --WB = Write Byte mode
     
      IF lv_len < 32760
      THEN
        UTL_FILE.Put_Raw ( lv_output , lv_blob );
        UTL_FILE.FFlush ( lv_output );
      ELSE
        lv_start := 1;
        WHILE lv_start < lv_len
        LOOP
          DBMS_LOB.Read ( lv_blob , lv_byte_len , lv_start , lv_raw );
          UTL_FILE.Put_Raw ( lv_output , lv_raw );
          UTL_FILE.FFlush ( lv_output );
          lv_start := lv_start + lv_byte_len;
          lv_x := lv_x - lv_byte_len;
          IF lv_x < 32760 THEN
            lv_byte_len := lv_x;
          END IF;
        END LOOP;
      END IF;
      UTL_FILE.FClose ( lv_output );
     
    END;


    Vous êtes sûr de ne pas avoir un retraitement derrière, car c'est vraiment du texte libre :
    en effet, j'ai essayé avec une version 'TOTO' mais j'ai obtenu le même résultat.

    Ce que vous dites est judicieux: il doit y avoir un traitement derrière. Mais où?

Discussions similaires

  1. [DisplayTag] Problème d'encoding UTF-8 avec export
    Par Fr@ncky dans le forum Taglibs
    Réponses: 19
    Dernier message: 04/06/2015, 08h48
  2. Réponses: 1
    Dernier message: 24/03/2014, 16h00
  3. Réponses: 5
    Dernier message: 11/07/2010, 14h07
  4. Encoder fichier en UTF-8 avec UTL_FILE
    Par Jdubernat dans le forum PL/SQL
    Réponses: 0
    Dernier message: 05/06/2009, 17h51
  5. instruction pour xml Encoder utf-8
    Par totoche dans le forum ASP
    Réponses: 7
    Dernier message: 14/02/2007, 11h03

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