Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > XML > DOM
DOM Forum d'entraide pour l'extension DOM permettant de manipuler des documents XML en PHP 5 (approche DOM). Avant de poster -> tutoriels DOM
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 10/01/2008, 16h45   #1
Invité de passage
 
Inscription : janvier 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 3
Points : 1
Points : 1
Par défaut [DOM] Suppresion d'un noeud XML

Voila mon fichier xml:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<?xml version="1.0" encoding="UTF-8"?>
<simpleviewerGallery maxImageWidth="480" maxImageHeight="480" textColor="0xFFFFFF" frameColor="0xffffff" frameWidth="20" stagePadding="40" thumbnailColumns="3" thumbnailRows="3" navPosition="left" title="Galerie" enableRightClickOpen="true" backgroundImagePath="" imagePath="" thumbPath="">
<image>
	<filename>1.jpg</filename>
	<caption/>	
</image>
<image>
	<filename>2.jpg</filename>
	<caption/>	
</image>
</simpleviewerGallery>
Et je voudrais en ayant juste le filename chercher la boucle correspondante dans le xml et ensuite supprimer le noeud image qui lui correspond.
J'ai fait des recherches et trouvé un bout de code mais il me sort une erreur:
  • Fatal error: Call to a member function removeChild() on a non-object in C:\PHP\Site web ELEONORE\V3\xml.php on line 28

Voici mon code:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
function delete_nod()
{
$document = new DomDocument();
$document->load('gallery.xml');
$images = $document->getElementsByTagName('image');
foreach ($images AS $image_)  {
$found = false;
foreach ($image_->childNodes AS $node)
{
if ($node->nodeType != XML_ELEMENT_NODE)
continue;
//$_GET['varname'] => nom de l'image recherché pour la suppression
if ($node->tagName == 'filename' && $node->nodeValue == $_GET['varname'])
{
echo '<p>Image ' . $node->nodeValue . ' correctement supprimer!</p>';
$image->removeChild($image_);
}
}
$document->save('gallery.xml');
}
}
lbouriez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 17h00   #2
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Il n'est pas valide ou alors ce n'est qu'un extrait de votre document XML : il ne doit y avoir qu'une seule et unique racine à tout document D'autant plus que ça facilite les choses ...
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 19h25   #3
Invité de passage
 
Inscription : janvier 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 3
Points : 1
Points : 1
Voici le fichier xml en entier :

Code :
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8"?>
<simpleviewerGallery maxImageWidth="480" maxImageHeight="480" textColor="0xFFFFFF" frameColor="0xffffff" frameWidth="20" stagePadding="40" thumbnailColumns="3" thumbnailRows="3" navPosition="left" title="Galerie" enableRightClickOpen="true" backgroundImagePath="" imagePath="" thumbPath="">
<image>
	<filename>1.jpg</filename>
	<caption/>	
</image>
<image>
	<filename>2.jpg</filename>
	<caption/>	
</image>
</simpleviewerGallery>
lbouriez est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 19h42   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Code :
1
2
3
4
5
6
7
8
9
10
11
define('FICHIER_XML', 'gallery.xml');
$dom = new DomDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->formatOutput = TRUE;
$dom->load(FICHIER_XML);
$xpath = new DomXPath($dom);
$res = $xpath->query(sprintf('/simpleviewerGallery/image[filename = "%s"]', utf8_encode($_GET['varname'])));
foreach($res as $img) {
    $dom->documentElement->removeChild($img);
}
$dom->save(FICHIER_XML);


Mais comme toujours il existe plusieurs solutions ...
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2008, 19h58   #5
Invité de passage
 
Inscription : janvier 2008
Messages : 3
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 3
Points : 1
Points : 1
Ca fonctionne, c'est nickel, merci beaucoup, seul j'aurais jamais trouvé


Thx
lbouriez est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h35.


 
 
 
 
Partenaires

Hébergement Web