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] copie de noeuds entre deux documents distincts


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut [DOM] copie de noeuds entre deux documents distincts
    Salut !

    J'aurais aimé savoir comment faire pour copier un noeud d'un document dans un autre document. En effet, lorsque l'on fait ceci :

    $element = $document1->createElement("pouet");
    $document2->appendChild($element->cloneNode());

    une exception DOM_WRONG_DOCUMENT_ERR est levée.

    Il apparaît donc que la copie d'un noeud d'un document vers un document différent n'est pas permise. N'y a-t-il vraiment aucun moyen (propre si possible) de le faire ?

    Merci par avance !

    Note : j'utilise PHP 5.x et l'extension DOM XML.

    P.S. : je n'ai vraiment pas envie de faire de la copie à grands coups d'analyse de nom de noeuds, d'attributs, d'espaces de nommage, le tout récursivement avec les performances qui vont bien... x)

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    Suite à cette avalanche de réponses...

    J'ai débusqué une petite fonction de la documentation PHP qui m'avait échapé hier. Il s'agit de la méthode DOMDocument#importNode(DOMNode). Elle s'utilise ainsi :
    $document1 = new DOMDocument();
    $document1->loadXML("<a><b/></a>");
    $path1 = new DOMXPath($document1);
    $nodeB1 = $path1->evaluate("/a/b")->item(0);

    $document2 = new DOMDocument();
    $document2->loadXML("<a><b><c/></b></a>");
    $path2 = new DOMXPath($document2);
    $nodeC2 = $path2->evaluate("/a/b/c")->item(0);

    $nodeC1 = $document1->importNode($nodeC2);
    $nodeB1->appendChild($nodeC1);
    Résultat, $document1 : <a><b><c/></b></a>

    Voilà, j'espère que ça pourra aider certaines personnes fatiguées qui sautent des lignes dans la documentation PHP... x)

Discussions similaires

  1. Copy - Paste entre deux documents sans Activate
    Par Menhir dans le forum VBA Word
    Réponses: 7
    Dernier message: 31/01/2014, 19h41
  2. Copie de données entre deux tables distinctes
    Par newty dans le forum Requêtes
    Réponses: 7
    Dernier message: 30/07/2010, 16h25
  3. Réponses: 2
    Dernier message: 17/01/2007, 09h22
  4. [XPath] Recuperation des noeuds Entre Deux Commentaires
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 03/07/2006, 13h08
  5. copie de tables entre deux bases
    Par rlgrand dans le forum Débuter
    Réponses: 3
    Dernier message: 27/12/2004, 12h12

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