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 26/10/2007, 20h26   #1
Membre régulier
 
Étudiant
Inscription : février 2007
Messages : 378
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Canada

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 378
Points : 90
Points : 90
Par défaut [DOM] Suppression d'un nœud

C'est encore moi

en fait j'ai besoin de connaitre une fonction de DOM qui prend en entré un id et retourne en sortie le noeud correspondant

voici mon code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
	$ids = $dom->getElementsByTagName('id');//recuperer les id
		$IDS= array();
		$i=0;
		foreach ($ids as $lesids)//mettre tous les id dans un tablea
		{
			$IDS[$i]= $lesids->firstChild->nodeValue ;
			$i++;
		}
		$i=0;
		 if (is_array($_POST['projets'])) {//$_POST['projets']) c'est pour les checkbox!
                foreach ($_POST['projets'] as $id) {
                    if (IDS[$i]==$id) {
                        //la suppression dois se faire ici
                    } else {
                        die("blablabla");
                    }
					$i++;
                }
				
            }

dans le commentaire en rouge je veux recuperer le noeud de l'id correspondant et effectuer mon removeChild


merci julp



...
Mo_Poly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 20h49   #2
Membre régulier
 
Étudiant
Inscription : février 2007
Messages : 378
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Canada

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 378
Points : 90
Points : 90
j'ai modifié mon code

eh non ca ne marche pas :


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ids = $dom->getElementsByTagName('id');//recuperer les id
 
		$i=0;
		 if (is_array($_POST['projets'])) {//$_POST['projets']) c'est pour les checkbox!
                foreach ($_POST['projets'] as $id) {
                   foreach($ids as $IDD){
				   $tmp=$IDD->firstChild->nodeValue;
				   		if($id==$tmp){
						echo"test";
							$projet= $dom->getElementsByTagName("projets")->item(0);
							$projet->removeChild($IDD);
						}
				   }
                }
 
            }
j'ai une exception :

Fatal error: Uncaught exception 'DOMException' with message 'Not Found Error' in C:\Documents and Settings\mo\Mes documents\html\delproj.php:37 Stack trace: #0 C:\Documents and Settings\mo\Mes documents\html\delproj.php(37): DOMNode->removeChild(Object(DOMElement)) #1 {main} thrown in C:\Documents and Settings\mo\Mes documents\html\delproj.php on line 37

la ligne 37 est celle du removeChild.. et le echo"test" est executé , j'obtient l'affichage de test !


ou est l'erreur


...
Mo_Poly est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2007, 23h37   #3
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
Je pense que vous avez fait une erreur : la suppression se fait à partir du parent donc ce serait à partir d'un élément struct et non de projets. Par ailleurs j'imagine que c'est cet élément struct que vous voulez supprimer et non simplement id :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$xpath = new DomXPath($dom);
 
if (is_array($_POST['projets'])) {
    foreach ($_POST['projets'] as $id) {
        $res = $xpath->query('/projets/struct[id = "' . $id . '"]');
        if ($res && $res->length == 1) {
            $n = $res->item(0);
            $n->parentNode->removeChild($n);
        } else {
            die('Erreur');
        }
    }
}
J'espère que c'est ça car il m'est difficile d'interpréter un code sans la structure du document XML qui lui est associé (un exemple succinct et testable étant préférable).

Voir aussi : Comment supprimer les noeuds correspondant à une expression XPath en PHP5 ?
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2007, 00h29   #4
Membre régulier
 
Étudiant
Inscription : février 2007
Messages : 378
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Canada

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 378
Points : 90
Points : 90
merci c parfait



...
Mo_Poly 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 15h54.


 
 
 
 
Partenaires

Hébergement Web