11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Voici le problème sur lequel je butte depuis plusieurs semaines. Smiley mur
[J'ai volontairement simplifié les documents].

Important : mon site est sous php 5.0.4 et la fonction utilisée et donc DOM et pas DOM-XML

J'ai donc un document xml semblable à celui-ci :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE list [<!ATTLIST list ID ID #IMPLIED>]>
<list>
   <personne ID="P0001">
      <nom>Jean-Marie</nom>
      <naissance>19590526Z</naissance>
   </personne>
   <personne ID="P0002">
        <nom>Jacques</nom>
        <naissance>19630812Z</naissance>
   </personne>
   <personne ID="P0003">
        <nom>Marie</nom>
        <naissance>19720317Z</naissance>
   </personne>
</list>


Mon objectif : permettre à un utilisateur de modifier sa date de naissance.

Pour le formulaire, la gestion sessions php et la récupération des données : aucun problème.
Aucune difficulté non plus pour ajouter une personne avec ID, nom et naissance.
Mais quand je veux modifier "naissance" d'une personne, je galère. J'ai pourtant attentivement lu la document (php.net) et les exemples (plus particulièrement
replaceChild()), je n'y comprend rien.

Ni d'ailleurs comment faire pour supprimer un noeud dans le document xml.

Qui as une solution ou un lien vers une solution.

Merci.
Modifié par h2o (22 Aug 2005 - 11:31)
Cette réponse à moi-même simplement pour relancer la question.
Supprimer et modifier des éléments et/ou attributs dans un document xml avec DOM et php 5 est un information qui me manque "cruellement".
Merci de vos réponse.
bonjour,
c'est DomXml mais dans le principe ...
(c'est vrai que la doc n'est pas claire, elle est même fausse parfois)


<?php
$xmlstr = "
<mesdb>
<element id='1999Janart' nbmsg='0'/>
<element id='1999Janmusiques' nbmsg='0'/>
<element id='1999Janimages' nbmsg='0'/>
<element id='1999Jandroit' nbmsg='0'/>
<cut/>
<element id='2007Deckernel' nbmsg='0'/>
</mesdb>";

$an=1999;
$mois="Jan";
$listes="images";
$elid=$an.$mois.$listes;

$dom = domxml_open_mem($xmlstr);

$xpth = $dom->xpath_new_context();
$xnode = xpath_eval($xpth,"//element[@id='".$elid."']");

$elnode = $xnode->nodeset[0];
$elnbmsg=$elnode->attributes();


$nomsg=getAttribute('nbmsg',$elnbmsg);
echo htmlentities($dom->dump_node($elnode));
echo '<br />nbmsg: '.$nomsg.'<br />' ;
$nomsg++;
$nvel = $dom->create_element("element");
$elnode->replace_node($nvel);
$nvel->set_attribute ('id',$elid);
$nvel->set_attribute ('nbmsg',$nomsg);

echo htmlentities($dom->dump_node($nvel));
echo '<br /> nbmsg: '.$nomsg.'<br /> ';

echo '<br /><PRE>';
echo htmlentities($dom->dump_mem(true));
echo "</PRE>";

function getAttribute($name, $att){
	foreach($att as $i){
		if($i->name()==$name) return $i->value();       
   }
}      

?>