Problème XML suppression
Résolu
griko
Messages postés
401
Statut
Membre
-
griko Messages postés 401 Statut Membre -
griko Messages postés 401 Statut Membre -
Bonjour,
pour supprimer un élément de mon fichier xml, j'utilise removeChild() mais ça ne fonctionne pas et je ne vois pas pourquoi !
Voici l'erreur :
la ligne 16 correspond à removeChild()
--
Webmaster de : Cinéco.fr | Le site Cinéphile!
pour supprimer un élément de mon fichier xml, j'utilise removeChild() mais ça ne fonctionne pas et je ne vois pas pourquoi !
Voici l'erreur :
Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error' in cheminfichier\ajax\deletxml.php:16 Stack trace: #0 cheminfichier\ajax\deletxml.php(16): DOMNode->removeChild(Object(DOMElement)) #1 cheminfichier\ajax\ajax_deletefilm.php(120): include('cheminfichier') #2 {main} thrown in cheminfichier\ajax\deletxml.php on line 16
la ligne 16 correspond à removeChild()
--
Webmaster de : Cinéco.fr | Le site Cinéphile!
6 réponses
-
$dom->load(longmetrage_xml.xml');
Ça commence déjà malif ($suppfilm->hasAttribute("id") == $idfilm) {DOMElement::hasAttribute retourne un booléen. Ça fonctionne quand même ainsi si $idfilm n'est pas null, false, une chaine vide ou 0.$dom->save(longmetrage_xml.xml');
Encore une erreur
Voilà la ligne qui pose erreur corrigée :$suppfilms->getElementsByTagName('films')->item(0)->removeChild($suppfilm);L'explication : $suppfilms représente le noeud <longmetrage>, hors, c'est depuis le noeud <films> qu'il faut appeler la méthode removeChild() (car c'est ce noeud qui est parent au <film /> qu'on désire supprimer).-
Merci @avion-f16, je vais tester ça.
Autrement à l'instant, je viens de voir un problème sur un fichier qui fonctionnais bien !
En faite il y a 8 jours, j'ai utilisé $dom->load(le fichier) et là ça fonctionnais très bien mais aujourd'hui je dois réutiliser ça mais ce n'est plus le fichier actualisé en date d'aujourd'hui mais celui de la dernière fois !
Pourquoi ? !
J'ai pensé qu'il fallait fermer le fichier après lecture, vrai ou faux ? Sinon pourquoi ça fait ça ?
Edit : Sinon, peut être que c'est mieux créer un nouveau fichier de copier dedans avant de lire et après lecture, supprimer ce fichier ? -
-
:) en fait il y a une semaine j'ai utilisé une fonction qui lit les fichier xml afin de récupérer les informations.
J'ai donc utiliser $dom->load()
Mais aujourd'hui, j'ai découvert en ré utilisant cette fonction que c'était les mêmes données que la semaine dernière.
Sachant que le fichier xml à été modifier depuis la semaine dernière.
Donc je comprends pas pourquoi j'ai encore l'ancien fichier alors que on m'avait dit que l'utilisation de load() permettait de rechercher le fichier.
Une idée ? de comment faire pour avoir le fichier à jour ? -
-
Pour voir, après chargement, j'ai mis dans un nouveau fichier et c'est toujours le contenu de la semaine dernière :
$dom_sallesO = new DomDocument(); $dom_sallesO->load('http://www.xxxx.com/n1/Salles.xml'); $dom_sallesO->save($_SESSION['niveau_dossier_includ'].'xml/pathegaumont/Salles.xml');
Sachant que quand je regarde le fichier http://www.xxxx.com/n1/Salles.xml, dans un navigateur il affiche le contenu de cette semaine.
-
-
-
Salut.
Ça serait bien d'avoir le code du traitement complet, et aussi la structure du XML. -
Sans source, nous pouvons rien faire comme le dit avion-f16.
Car la si tu veux on va pas t'inventer des codes qui nous sont venus par hasard x'). -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Voici le code PHP
switch($filmcm_sortiesall['type_film_o_cm']){ case'longmetrage': $dom = new DomDocument(); $dom->load(longmetrage_xml.xml'); $suppfilms = $dom->documentElement; $film = $suppfilms->getElementsByTagName("film"); foreach($film as $suppfilm){ if ($suppfilm->hasAttribute("id") == $idfilm){ if ($suppfilm->getAttribute("id") == $idfilm){ //print_r($suppfilm); $suppfilms->removeChild($suppfilm); } } } $dom->save(longmetrage_xml.xml'); break; }
Et la structure<?xml version="1.0" encoding="ISO-8859-1"?> <longmetrage> <films></films> </longmetrage>
Et voici la ligne ajoutée entre <films><film id="" name="" url=""/>
-