Transformer un PHP en XML

Transformer un PHP en XML - PHP - Programmation

Marsh Posté le 11-09-2009 à 10:29:08    

Bonjour,
 
Voilà je fait actuellement un formulaire avec ELgg (ne vous inquiété pas restez lire la suite), et j'ai un problème pour transformer mon CV europass crée en XML
Voilà mon code
 

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <europass:learnerinfo xmlns:europass="http://europass.cedefop.europa.eu/Europass/V2.0"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.     xsi:schemaLocation="http://europass.cedefop.europa.eu/Europass/V2.0 http://europass.cedefop.europa.eu/ [...] .xsd&#034;
  5.     locale="en_GB">
  6.     <docinfo>
  7.         <issuedate>2008-10-10T11:50:08+03:00</issuedate>
  8.         <xsdversion>V2.0</xsdversion>
  9.         <comment>Automatically generated Europass CV</comment>
  10.     </docinfo>
  11.      <identification>
  12.         <firstname><?php echo ($vars['cvconvertguid']->firstname); ?></firstname>
  13.         <lastname><?php echo ($vars['cvconvertguid']->surname); ?></lastname>
  14.         <demographics>
  15.             <birthdate><?php echo ( $vars['cvconvertguid']->date); ?></birthdate>
  16.             <gender><?php echo ( $vars['cvconvertguid']->gender); ?></gender>
  17.             <nationality>
  18.                 <label><?php echo ( $vars['cvconvertguid']->nationnality); ?></label>
  19.             </nationality>
  20.         </demographics>
  21.         <contactinfo>
  22.         <telephone><?php echo ($vars['cvconvertguid']->telephone); ?></telephone>
  23.         <mobile><?php echo ($vars['cvconvertguid']->mobile); ?></mobile>
  24.         <email><?php echo ($vars['cvconvertguid']->email); ?></email>
  25.         <fax><?php echo ($vars['cvconvertguid']->fax); ?></fax>
  26.         </contactinfo>
  27.     </identification>
  28.     <?php $expro = get_entities_from_relationship("relationCvExp", $vars['cvconvertguid']->guid);?>
  29.     <?php foreach ($expro as $experience):  ?>
  30.     <workexperiencelist>
  31.         <workexperience>
  32.             <period>
  33.                 <from>
  34.                     <year><?php echo ($experience->dateexperience ); ?></year>
  35.                     <month>--<?php echo ( $experience->month); ?></month><day>---<?php echo ( $experience->day); ?></day>
  36.                 </from>
  37.                 <to>
  38.                     <year><?php echo ($experience->dateexperiencefin); ?></year>
  39.                     <month>--<?php echo ( $experience->monthfin); ?></month>
  40.                     <day>---<?php echo ( $experience->dayfin); ?></day>
  41.                 </to>
  42.             </period>
  43.             <position>
  44.                 <label><?php echo $experience->position; ?></label>
  45.             </position>
  46.             <activities><?php echo ( $experience->responsibilities); ?></activities>
  47.             <employer>
  48.                 <name><?php echo ( $experience->employer); ?></name>
  49.                 <address>
  50.                     <addressLine><?php echo $experience->addressexp; ?></addressLine>
  51.                     <municipality><?php echo $experience->municipalityexp; ?></municipality>
  52.                     <postalCode><?php echo $experience->postalexp; ?></postalCode>
  53.                     <country>
  54.                         <label><?php echo $experience->countryexp; ?></label>
  55.                     </country>
  56.                 </address>
  57.                 <sector>
  58.                     <label><?php echo ( $experience->business); ?></label>
  59.                 </sector>
  60.             </employer>
  61.         </workexperience>
  62.         <?php endforeach; ?>
  63.     </workexperiencelist>
  64.     <?php $educ = get_entities_from_relationship("relationCvEdu", $vars['cvconvertguid']->guid);?>
  65.     <?php foreach ($educ as $education):  ?>
  66.     <educationlist>
  67.         <education>
  68.             <period>
  69.                 <from>
  70.                     <year><?php echo ( $education->dateeducation); ?></year>
  71.                     <month>--<?php echo $education->monthed; ?></month>
  72.                     <day>---<?php echo $education->dayed; ?></day>
  73.                 </from>
  74.                 <to>
  75.                     <year><?php echo ( $education->dateeducationfin); ?></year>
  76.                     <month>--<?php echo ( $education->monthedfin); ?></month>
  77.                     <day>---<?php echo ( $education->dayedfin); ?></day>
  78.                 </to>
  79.             </period>
  80.             <title><?php echo ( $education->qualification); ?></title>
  81.             <skills><?php echo ($education->skills); ?></skills>
  82.             <organisation>
  83.                 <name><?php echo ($education->education); ?></name>
  84.                 <address>
  85.                     <addressLine><?php echo $education->addressed; ?></addressLine>
  86.                     <municipality><?php echo $education->municipalityed; ?></municipality>
  87.                     <postalCode><?php echo $education->postaled; ?></postalCode>
  88.                     <country>
  89.                         <label><?php echo $education->countryed; ?></label>
  90.                     </country>
  91.                 </address>
  92.             </organisation>
  93.             <level>
  94.                 <label><?php echo ($education->level); ?></label>
  95.             </level>
  96.         </education>
  97.     </educationlist>
  98.     <?php endforeach; ?>
  99.     <languagelist>
  100.         <language xsi:type="europass:mother">
  101.             <label><?php echo ($vars['cvconvertguid']->languages); ?></label>
  102.         </language>
  103.         <language xsi:type="europass:foreign">
  104.             <label><?php echo ($vars['cvconvertguid']->other); ?></label>
  105.            
  106.         </language>
  107.     </languagelist>
  108.     <skilllist>
  109.         <skill type="social"><?php echo ($vars['cvconvertguid']->socialskills); ?> </skill>
  110.         <skill type="organisational"><?php echo ($vars['cvconvertguid']->orgaskills); ?></skill>
  111.         <skill type="technical"><?php echo ($vars['cvconvertguid']->techskills); ?></skill>
  112.         <skill type="computer"><?php echo ($vars['cvconvertguid']->compskills); ?> </skill>
  113.         <skill type="artistic"><?php echo ($vars['cvconvertguid']->artskills); ?></skill>
  114.         <skill type="other"><?php echo ($vars['cvconvertguid']->otherskills); ?></skill>
  115.         <structured-skill xsi:type="europass:driving">
  116.             <drivinglicence><?php echo ($vars['cvconvertguid']->driving); ?></drivinglicence>>
  117.         </structured-skill>
  118.     </skilllist>
  119.     <misclist>
  120.         <misc type="additional"><?php echo ($vars['cvconvertguid']->info); ?></misc>
  121.         <misc type="annexes"><?php echo ($vars['cvconvertguid']->annexe); ?></misc>
  122.     </misclist>
  123. </europass:learnerinfo>


 
C'est gros c'est pas beau. Bon pour le $vars['convertguid']->info sa contient par exemple le input/text d'information complémentaire
 
en fait les $vars['converguid']-> contient la valeur que je lui ai associé avec le nom situé après le ->.
 
Donc voilà il s'agit du fichier xml de CVEuropass si quelqu'un pourrais maider à comprendre un peu vu que c'est la première fois que j'en fait un.
 
Merci

Reply

Marsh Posté le 11-09-2009 à 10:29:08   

Reply

Marsh Posté le 11-09-2009 à 10:59:20    

En quoi c'est pas beau ? A part l'escaping qui manque ?

Reply

Marsh Posté le 11-09-2009 à 11:09:39    

C'etait de l'ironie ^^et pour le pas beau c'est pour ceux qui ne connaisse pas le jquery

Reply

Marsh Posté le 11-09-2009 à 11:19:40    

Y'a pas de jQuery là-dedans  [:jimbotte] Et je pige toujours pas où est la question :D

Reply

Marsh Posté le 11-09-2009 à 11:21:49    

looool oui y a du elgg dedans.
 
Ma question est pourquoi sa ne transforme pas mon fichier en fichier XML ou est mon erreur

Reply

Marsh Posté le 11-09-2009 à 11:39:00    

Y'a-t-il un message d'erreur quelconque ? Affiche la sortie, pour voir si y'a pas de l'XML invalide

Reply

Marsh Posté le 11-09-2009 à 11:44:20    

Alors quand je lance le fichier j'ai une page blanche qui est afficher:
 
Sous firrebug : dans l'onglet html j'ai <html><body></pre></body></html>
 
Je t'avoue que c'est la premiere fois que je fait du XML: J'ai fait le schéma  du code sous Oxygène mais sans rentré de PHP juste en mettant les valeurs en dur et il était bon

Reply

Marsh Posté le 11-09-2009 à 12:13:40    

Fait voir le code autour de l'XML, celui qui assigne les variables et gère la sortie

Reply

Marsh Posté le 11-09-2009 à 12:19:12    

ouki donc si tu t'y connais en elgg je te montre tout ça ^^ j'ai chercher un peu faudrait pas que je mette CDATA autour de mon php?
 
Alors fonction qui récupère mes valeur au début ^^ je t'en met que un peu
 

Code :
  1. $firstname = get_input('firstname');
  2. $surname = get_input('surname');
  3. $adresse = get_input('adresse');
  4. $telephone = get_input('telephone');
  5. $mobile = get_input('mobile');
  6. $fax = get_input('fax');
  7. $email = get_input('email');
  8. $date = get_input('date');
  9. $gender = get_input('gender');
  10. $count = get_input('count');
  11. $counted = get_input('counted');
  12. $nationnality = get_input('nationnality');
  13. $cveuropass = new ElggObject();
  14. $cveuropass->title = $title;
  15. $cveuropass->firstname = $firstname;
  16. $cveuropass->surname = $surname;
  17. $cveuropass->description = $body;
  18. $cveuropass->adresse = $adresse;
  19. $cveuropass->telephone = $telephone;
  20. $cveuropass->mobile = $mobile;
  21. $cveuropass->fax = $fax;
  22. $cveuropass->email = $email;
  23. $cveuropass->date = $date;
  24. $cveuropass->gender = $gender;
  25. $cveuropass->count = $count;
  26. $cveuropass->counted = $counted;
  27. $cveuropass->subtype = "cveuropass";
  28. // for now make all blog posts public
  29. $cveuropass->access_id = ACCESS_PUBLIC;
  30. // owner is logged in user
  31. $cveuropass->owner_guid = get_loggedin_userid();
  32. // save tags as metadata
  33. // save to database
  34. $cveuropass->save();
  35. forward($cveuropass->getURL());


 
Sa c'est le fichier principal. Après j'ai aussi fait un fichier modifier pour modifier le CV qui marche.
Puis un fichier Convertxml qui est appelé quand on clique sur le bouton de index(qui contient la vue de mon formulaire finit)
 

Code :
  1. <?php
  2.   // Load Elgg engine
  3. include_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php" );
  4. // make sure only logged in users can see this page
  5. gatekeeper();
  6. $convertguid = get_input('guid');
  7. $convert = get_entity($convertguid);
  8. echo elgg_view('convertxmlform/converttoxml', array('cvconvertguid'=> $convert));
  9. ?>


Donc en fait quand je clique sur le bouton je lui envoie le GUID du blog en parametre que le fichier du haut recupère.
Avec mon get entity je prend tout les élement de mon blog => SA sa marche déjà fait pour le fichier modifier qui fonctionne.
Et donc la j'appel mon fichier XML qui serra en .php vu que elgg aime que ça ou presque et je l'affiche normalement directement. Mais bon sa ne marche pas ^^
 
J'espère que cela t'aide et que tu n'es pas trop perdu?


Message édité par Shinzo94 le 11-09-2009 à 12:19:37
Reply

Marsh Posté le 11-09-2009 à 12:45:22    

Je connaissais pas elgg avant de lire ton premier message :D
 
Mais apparemment elgg_view devrait retourner effectivement le contenu du fichier XML :/
 
Y'a peut-être une erreur ailleurs. Alors souvent, si dans le php.ini y'a la directive shortags qui est activé, la PI XML fait planter. Et j'imagine que elgg utilise de l'output buffering pour récupérer la sortie, ce qui dans certains cas peut masquer certaines erreurs.
 
Change l'entête, à la place de  

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <europass.....


Met  

Code :
  1. <?php echo '<?xml version="1.0" encoding="UTF-8"?>', "\n" ?>
  2. <europass....


Reply

Marsh Posté le 11-09-2009 à 12:45:22   

Reply

Marsh Posté le 11-09-2009 à 12:48:24    

T'inquiète je commence en Elgg aussi ^^
 
Alors si je fait ce que tu me dit voilà ce que ça m'affiche
 
 2008-10-10T11:50:08+03:00  V2.0  Automatically generated Europass CV        f                    -----1     --  ---
-- --- -- ---
>  
 
C'est un bon début j'ai déjà quelques valeurs ^^

Reply

Marsh Posté le 11-09-2009 à 12:50:55    

J'arrive à avoir les valeur sa m'a beaucoup aidé ^^  
 
Merci beaucouppppp
 
En fait il faut enlever les CDATA qui bloque.....je ne sais pas pourquoi

Reply

Marsh Posté le 11-09-2009 à 13:06:19    

Pas besoin de CDATA ici :)
 
Par contre, n'oublie pas aussi d'escaper les valeurs :

Code :
  1. echo htmlspecialchars($valeur);


Sinon s'il se glisse des &, < ou >, ça plantera à nouveau

Reply

Marsh Posté le 11-09-2009 à 13:21:28    

d accord merci beaucoup en tout cas ^^

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed