Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks
Bibliothèques et frameworks Forum d'entraide sur les frameworks, templates, bibliothèques de code (PDFLib, eZPdf, JpGraph, Artichow, PEAR, etc). Avant de poster : FAQ bibliothèques, toutes les FAQ PHP et cours bibliothèques
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/2007, 20h20   #1
Membre confirmé
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 285
Points : 285
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)
Oscar Hiboux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 15h56   #2
Membre confirmé
 
Inscription : mars 2006
Messages : 318
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : mars 2006
Messages : 318
Points : 285
Points : 285
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)
Oscar Hiboux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h51.


 
 
 
 
Partenaires

Hébergement Web