Pb dom pr gnérer du xml

chanandler Messages postés 86 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 3 décembre 2007 - 31 mai 2006 à 21:52
chanandler Messages postés 86 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 3 décembre 2007 - 1 juin 2006 à 19:13
Bonjour,


J'ai code php qui utilise dom qui marche presque sauf qu'il ne fais pas
complétement ce que je veux, le code sera mieux qu'un long discours
donc le voici.


dom.php

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

<?php
$dom=new DomDocument();

$dom->load("fichier.xml");

$newphoto = $dom->createElement('photo');
$newnom = $dom->createElement('nom','bapteme.jpg');
$newdescription = $dom->createElement('description');
$newevenenement = $dom->createElement('evenenement','bapteme');
$newprotagoniste = $dom->createElement('protagoniste');
$newpersonnage = $dom->createElement('max','personnage');
$newpersonnage = $dom->createElement('personnage','caroline');

$dom->appendChild($newphoto);
$newphoto->appendChild($newnom);
$newphoto->appendChild($newdescription);
$newphoto->appendChild($newevenenement);
$newphoto->appendChild($newprotagoniste);
$newphoto->appendChild($newpersonnage);
$newphoto->appendChild($newpersonnage);

$dom->formatOutput = true;

$dom->save("fichier.xml");
?>

<!-- END TEMPLATE: bbcode_code -->

Mon fichier xml

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

<?xml version="1.0" encoding="ISO-8859-1"?>
<galerie>

<nom>mariage.jpg</nom>
<description>
<evenement>mariage</evenement>

Mamie

pablo

</description>

</galerie>

<!-- END TEMPLATE: bbcode_code -->

Ce que j'obtient aprés dom.
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

<?xml version="1.0" encoding="ISO-8859-1"?>
<galerie>

<nom>mariage.jpg</nom>
<description>
<evenement>mariage</evenement>

Mamie

pablo

</description>

</galerie>

<nom>bapteme.jpg</nom>
<description/>
<evenenement>bapteme</evenenement>

caroline

<!-- END TEMPLATE: bbcode_code -->

donc voila le code que j'arrive a créé en rouge grace a mon fichier
php sauf que je n'arrive pas a que ca ressemble exactement a ce qui est
en bleu et bien sur j'aimerais que ce bout de code se retrouve entre
les balise galerie


Merci a vous !

12 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 juin 2006 à 07:57
Hello,

Déjà, tu réécris $newpersonnage, donc seul le 2d est pris en compte, c'est normal...
Donc :
$newpersonnage = $dom->createElement('max','personnage');
$newpersonnage2 = $dom->createElement('personnage','caroline');

Ensuite, tu "appendes mal". Ce qui est,pardonne-moi, un peu inquiètant. Le sens de DOM t'a échappé. Tu ne prends pas du tout en compte la notion noeud parent/noeud enfant.

Bon en gros :
$dom->appendChild($newphoto);
$newphoto->appendChild($newnom);
$newphoto->appendChild($newdescription);

// là, tout va bien...mais maintenant :

$newdescription->appendChild($newevenenement);
$newevenenement->appendChild($newprotagoniste);
$newprotagoniste->appendChild($newpersonnage);
$newprotagoniste->appendChild($newpersonnage2);

ca devrait aller mieux (non testé et fait entre 2 cafés et avant ma douche alors bon...).
Bref, tu dois faire le appendChild () sur le noeud parent! le noeud parent immédiat.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 juin 2006 à 07:58
ah et puis t'as inversé max et personnage ici, tien : $newpersonnage = $dom->createElement('max','personnage');
0
chanandler Messages postés 86 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 3 décembre 2007
1 juin 2006 à 10:00
Merci ca marche nickel mais serais tu pourquoi elle se présente en ligne et plus en colonne mes balises.

merci encore

<?xml version="1.0" encoding="ISO-8859-1"?>
<galerie>

<nom>mariage.jpg</nom>
<description>
<evenement>mariage</evenement>

Mamie

pablo

</description>

<nom>bapteme.jpg</nom><description><evenenement>bapteme</evenenement>max

caroline

</description>

</galerie>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 juin 2006 à 10:09
Parce que le début de ton fichier n'a pas été créé via DOM et php, mais à la main, je suppose, sous un logiciel dédié (Altova..?)
Et que DOM PHP ne rajoute pas de \n à la fin de chaque "ligne"...
Si tu veux le voir en arbo, n'utilise pas php. IL fauyt le visualiser avec ujn logiciel permettant de réorganiser le xml de cette manière (Altova, par exemple).


 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chanandler Messages postés 86 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 3 décembre 2007
1 juin 2006 à 10:18
Bas en faite j'ai utilisé un traitement de texte tous béte pour faire mon xml voila donc tu me conseil d'utiliser Altova pour créér mon xml ou sinon de créér tous mon fichier via Dom.

Meci de ton aide.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 juin 2006 à 10:35
Ben c'est pas pareil lol...
Si c'est du traitementg générique, à refaire souvent, faut utiliser PHPO et DOM.

Altova est juste un éditeur de XML. Tu peux l'utiliser pour en créer oui...ou en modifier...mais ça dépend, quoi.
Je te disais juste que si tu voulaius voir un xml créé par PHP de jolie manière, juste pour le visualiser, Altova est un bon moyen de le faire (mais c'est payant hein).
0
chanandler Messages postés 86 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 3 décembre 2007
1 juin 2006 à 10:41
Merci a toi, je vais voir ce qu eje peux faire pour une meilleur mise en page car si j'ai beaucoup de photo ca risque de devenir le bordelle lol si je veux ouvrir le fichier pour
visualiser quelque chose.

Merci !
0
chanandler Messages postés 86 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 3 décembre 2007
1 juin 2006 à 14:02
Jai une petite question subsidiére si ca te derange pas.
donc voila jai fais quelque test pour mon probléme et en faisant mes teste j'ai remarqué que mon code étais bien indenté quand il étais en-dehors des
balises <galerie> donc deja pourquoi la ca marche et sinon j'ai essayé de voir pour ajouter a chaque ajout de photo de mettre la balise </galerie> a la fin mais ca ne marche pas
et en plus je n'arrive pas a enlever l'ancienne balise </galerie> qui doit étre enlever avant l'ajout de photo sinon il y aura 2 balises galerie.

Merci a toi.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 juin 2006 à 14:24
Je n'ai rien compris. Réexplique stp.
0
chanandler Messages postés 86 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 3 décembre 2007
1 juin 2006 à 14:33
Fichier xml avec mon probléme :


<?xml version="1.0" encoding="ISO-8859-1"?>
<galerie>

<nom>mariage.jpg</nom>
<description>
<evenement>mariage</evenement>

Mamie

pablo

</description>

<nom>bapteme.jpg</nom><description><evenenement>bapteme</evenenement>max

caroline

</description>

</galerie>


Fichier partiellement résolu :




<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<galerie>



<nom>Dupond</nom>
<description>
<date>26/02/2006</date>
<evenement>bapteme</evenement>

Mamie

</description>


</galerie>

  <nom>montagne</nom>
  <description>
    <date>28/15/2066</date>
    <evenement>Mariage</evenement>
   
      Pablo

   

  </description>

En rose tu peux voir que j'ai réussi a creer mon code bien indenté mais bien sur tu peux voir c'est parceque je ne suis plus dans la balise <galerie>
Donc en faite je voulais savoir si il y aura pas une bidouille pour garder cette indentation mais pour cela faudrait ajouter </galerie>
 a la fin du code généré et donc enlever l'ancien  </galerie>

 voila en esperant avoir été plus clair merci a toi
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
1 juin 2006 à 17:43
Tu te prends la tête pour rien.
Tu ne peux pas en faisant du DOM, non...tu as juste oublié de créer l'élément sur la racine de ton flux xml, là.
0
chanandler Messages postés 86 Date d'inscription mardi 18 janvier 2005 Statut Membre Dernière intervention 3 décembre 2007
1 juin 2006 à 19:13
Merci a toi pour tes conseils eclairés.
0
Rejoignez-nous