IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques et frameworks PHP Discussion :

[DOM] Soucis avec CloneNode() et ChildNodes()


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 76
    Par défaut [DOM] Soucis avec CloneNode() et ChildNodes()
    Bonjour a toutes et a tous, j'ai une petite question concernant le déplacement d'un noeud.

    En effet j'aimerais pouvoir modifier mon fichier XML qui est le suivant:

    Voici mon fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="178.73px" height="145.518px" viewBox="0 0 178.73 145.518" enable-background="new 0 0 178.73 145.518" xml:space="preserve">
     
    	<g id="stripe1">
    		<line x1="0" y1="0" x2="90" y2="100" fill="none" stroke="#000000" stroke-width="5"/>
    	</g>
    	<g id="stripe2">
    		<line x1="20" y1="20" x2="90" y2="100" fill="none" stroke="#000000" stroke-width="5"/>
    	</g>
    	<g id="stripe3">
    		<line x1="40" y1="40" x2="90" y2="100" fill="none" stroke="#000000" stroke-width="5"/>
    	</g>
    	<g id="stripe4"/>

    Et voilà le résultat que j'aimerais obtenir:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="178.73px" height="145.518px" viewBox="0 0 178.73 145.518" enable-background="new 0 0 178.73 145.518" xml:space="preserve">
     
    	<g id="stripe1">
    		<line x1="0" y1="0" x2="90" y2="100" fill="none" stroke="#000000" stroke-width="5"/>
    	</g>
    	<g id="stripe2">
    		<line x1="40" y1="40" x2="90" y2="100" fill="none" stroke="#000000" stroke-width="5"/>
    	</g>
    	<g id="stripe3">
    		<line x1="20" y1="20" x2="90" y2="100" fill="none" stroke="#000000" stroke-width="5"/>
    	</g>
    	<g id="stripe4"/>

    Donc en fait j'ai modifier mon fichier en échangeant les fils de me "stripe2" et "stripe3"


    Alors j'utilise le "stripe4" comme moyen de transition. Je fais un Clone de ma "stripe3" et ainsi je pourrais faire un replaceChild entre la "stripe2" et la "stripe3".

    Voilà comment je precede dans mon fichier php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	$dom = new DomDocument;
    	$dom->load("monSVG.svg");
     
    	$elem = $dom->getElementsByTagName(g)->item(1);
    	$child = $elem->childNodes();
     
    	$stripe5 = $dom->getElementsByTagName(g)->item(4);
    	$stripe5->appendChild($child->cloneNode(true));
     
    	$dom->save('monSVG.svg');
    Je doit surement faire erreur car ce la ne fonctionne pas. Est ce que quelqu'un aurait une petite astuce pour m'aider sur ce coup là svp?

    Ou si un autre moyen existe afin que je puisse arriver a mes fins ^^

    Je suis preneur de tous commentaires !


    Merci a tous de m'avoir lu et bonne journée à vous !

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 3
    Par défaut
    Salut,
    Je pense que le code n'est pas totalement complet, mais pourquoi pas utiliser remplaceChild à la place de clone ? donc voici un code avec une petit fonction qui pourrait peut etre t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    function transfert($id_1,$id_2){
    	$dom=new DomDocument;
    	$dom=load("nom.xml");
     
    	$tag_1=false;
    	$tag_2=false;
     
     
    	if($dom->getElementById($id_1)){ // récupération du premier noeud
    		$tag_1=true;
    		$element_1=$dom->getElementById($id_1);
    	}
    	if($dom->getElementById($id_2)){ // récupération du deuxieme noeud
    		$tag_2=true;
    		$element_2=$dom->getElementById($id_2);
    	}
    // Il faut que les deux noeuds soient trouvé pour pratiquer le remplacement 
    	if($tag_1 and $tag_2){ // Si tag_1 et tag_2 sont bien égale a true 
     
    // C est peut etre cette partie qui est a changer car peut etre pas tres exact 
                    $tmp=$element_1;
    		$element_1->replaceChild($element_2,$element_1);
    		$element_2->replaceChild($tmp,$element_2);
    	}
    }
    Sinon pour ton code, dans le ->getElementsByTagName(g)-> essaye peut etre ->getElementsByTagName("g")-> .

Discussions similaires

  1. souci avec la propriété childNodes
    Par jamiria dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/11/2010, 13h24
  2. [DOM] Petit soucis avec innerHTML et ie
    Par dervish dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/11/2008, 20h17
  3. [DOM XML] Un souci avec un script
    Par namstou3 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 28/10/2007, 15h47
  4. [DOM] Soucis avec removeChild
    Par starr dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 21/07/2007, 18h22
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo