Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
après avoir aprcouru un peu le forum sans trouver de réponse je poste ma question :
j'ai un fichier xml : test.xml dont le contenu est :
<?xml version='1.0' encoding='utf-8'?> <liste> <entreprise> <nom> <![CDATA[ test1 ]]> </nom> <contacts> <contact> <![CDATA[ contact1 ]]> </contact> <contact> <![CDATA[ contact2 ]]> </contact> </contacts> </entreprise> <entreprise> <nom> <![CDATA[ test2 ]]> </nom> <contacts> <contact> <![CDATA[ contakt1 ]]> </contact> <contact> <![CDATA[ contakt2 ]]> </contact> </contacts> </entreprise> </liste>
j'ai aussi une DW que j'ai crée avec une colonne nom et une colonne contact et un template d'import (je l'ai copié depuis la source de la DW en faisant "edit source" si vous connaissez un moyen plus propre...) :
name="test_xml_template" xml="<?xml version=~"1.0~" encoding=~"UTF-8~" standalone=~"no~"?><liste><entreprise __pbband=~"detail~"><nom>nom</nom><contacts><contact>contact</contact></contacts></entreprise></liste>"))
Mon problème est le suivant :
j'arrive bien à importer les données seulement on dirait que toutes les valeurs sont précédés d'un carré (genre symbole ascci pas reconnu) et de plusieurs tabulations. exemple :
comment puis-je éviter ça ?
est-ce que mon template d'import est bon ?
Dernière modification par rincevent (29-10-2007 15:32:33)
Hors ligne
en UTF-ASCII ca ne change rien ?
Hors ligne
j'ai essayé de remplacer
<?xml version='1.0' encoding='utf-8'?>
par
<?xml version='1.0' encoding='UTF-ASCII'?>
et j'ai obtenu :
je suis sous Windows XP SP2
Powerbuilder 9.0.3 Build8004
Hors ligne
le template, tu peux le créer directement depuis ta DW.
Hors ligne
rincevent a écrit:
j'ai essayé de remplacer
<?xml version='1.0' encoding='utf-8'?>
par
<?xml version='1.0' encoding='UTF-ASCII'?>
et j'ai obtenu :
http://img80.imageshack.us/img80/7262/erroryp1.jpg
je suis sous Windows XP SP2
Powerbuilder 9.0.3 Build8004
déjà tu devrais refaire ton template proprement
Hors ligne
Je parlais de mon fichier texte/xml , vous avez pas précisé que je devais modifier le template...
bon sinon, j'ai cette ligne dans mon fichier texte/xml :
<?xml version='1.0' encoding='utf-8'?>
je l'ai ouvert avec ultraedit qui me disait que le fichier avait un format DOS je l'ai donc convertit (maintenant le format est U8-DOS)
Dans mon template XML dans PB j'ai toujours le format apr défaut UTF-8
je réessaye... toujours le même problème ...
j'essaye avec d'autres formats mais c'est toujours la même chose, en fait on dirait que ça change rien du tout de changer le format au niveau du template dans la DW
Dernière modification par rincevent (16-10-2007 12:48:18)
Hors ligne
update : j'ai fait un test avec un xml dans ce genre là
<?xml version='1.0' encoding='utf-8'?>
<liste>
<entreprise>
<nom>test1</nom>
<contacts>
<contact>contact1</contact>
etc...
un xml sans CDATA donc, et là ça fonctionne nickel, seul problème : le fichier que je vais recevoir lui il aura des CDATA et je peux pas modifier ça...
Hors ligne
Mets des données dans ta DW
fait un saveAs
Et fait un ImportFile du fichier généré pour voir si tu as le problème ...
--> Tu pourras alors récupérer la bonne entête ...
Hors ligne
Je n'ai pas de problème quand je fais ce que tu dis mais ça ne m'aide pas, quand moi j'exporte mes données elles se retrouvent sous cette forme :
<nom>test1</nom>
donc je n'ai aucun problème après à l'importation
Mais le fichier réel que je vais devoir importer et qui nous est fourni par une institution publique à qui on ne peut demander aucune modification, ce fichier lui est encodé comme ça :
<nom>
<![CDATA[ test1 ]]>
</nom>
et là ça tabule dans tous les sens à l'importation...
Hors ligne
http://www.techno-kitten.com/Changes_to … 9_0_3.html
http://download.sybase.pl/ebf_maint/im_ … 050726.htm
Change Request #: 351815
Hors ligne
JCZ a écrit:
http://www.techno-kitten.com/Changes_to_PowerBuilder/New_In_PowerBuilder_9/New_In_PowerBuilder_9_0_3/new_in_powerbuilder_9_0_3.html
j'ai essayé avec un template comme ceci (avec des <![CDATA[ columnname]]>) mais ça change rien, j'ai tjrs des tabulations avec mes données affichées dans la DW
JCZ a écrit:
http://download.sybase.pl/ebf_maint/im_win_903_mr8004_20050726.htm
Change Request #: 351815
euh... ? je n'ai pas ce problème, mon problème est juste que mes données me reviennent accompégnées de tabulations avant et après.
est-ce que ça pourrait pas être du à une option au niveau de windows ? un peu cmme un regional settings mais pour l'encodage des fichiers ?
Dernière modification par rincevent (16-10-2007 13:53:46)
Hors ligne
rincevent a écrit:
mon problème est juste que mes données me reviennent accompégnées de tabulations avant et après.
Alors après import modifie les données de la DW
Hors ligne
je vais avoir des dizaines de milliers de lignes à importer, j'aimerai autant les importer correctement du premier coup histoire de ne pas doubler ou tripler le temps nécessaire à un import...
Si je ne trouve vraiment pas d'autre solution je ferai comme ça (pas trop le choix) mais je vais encore chercher un peu avant de m'avouer vaincu.
Hors ligne
Je me souviens qu'il y a un problème avec les cdata en pb 9 avec ton build essaye de mettre le tout dernier build , j'ai le 8716 ça avait réglé mes problèmes..
Hors ligne
Désolé, je n'ai pas la meme version et je n'ai pas le probleme
Hors ligne
je suis passé au build 8784, j'ai toujours exactement le même problème...
un de ceux qui y arrivent correctement pourrait-il m'envoyer un couple fichier XML / export Datawindow que je puisse tester chez moi ?
la source du problème est directement au niveau du parsing par PB je pense, après avoir activé le trace log je remarque que quand les données sont simplement entre balises (ex : <nom>Durand</nom>) j'ovtiens dans le fichier log qqchose du genre :
ELEMENT: /liste/entreprise/nom: test1
alors que quand les données sont dans du CDATA j'obtiens :
ELEMENT: /liste/entreprise/nom:
test1
et donc finalement ma DW ne fait que m'afficher ce qui se trouve juste après "ELEMENT: /liste/entreprise/nom: "
( retour à la ligne + des tabulations + la valeur dans le cas CDATA)
Dernière modification par rincevent (17-10-2007 09:06:06)
Hors ligne
on met en résolu par rapport aux messages en MP ?
Hors ligne
voilà c'est fait.
Donc le problème viens quand le CDATA est lui-m^me placé à la ligne mais ce ne sera pas le cas dans le fichier que je vais devoir importer finalement.
Hors ligne