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/02/2007, 23h59   #1
Invité régulier
 
Inscription : mai 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 19
Points : 5
Points : 5
Par défaut [DOM] copie d'un noeud

Bonjour tout le monde

Bon j'explique le prob.

J'ai un fichier xml:

Code xml :
1
2
3
4
5
6
<?xml version="1.0" encoding="utf-8"?>
<tchat>
	<message date="1152726900" author="Will">Ceci est un essai !</message>
	<message date="1152727800" author="Benoit">Je vois ça</message>
	<message date="1152800000" author="Will">encore un test</message>
<message author="Will" date="1172513758">testons</message><message author="Will" date="1172513793">testohuihns</message></tchat>

Dans mon script php, je crée un document dom à partir de ce fichier.
Code :
1
2
$tchat_xml = new DOMDocument();
$tchat_xml->load('tchat.xml');
Et je crée manuellement un autre document dom.
Code :
1
2
3
4
$response_ajax = new DOMDocument("1.0", "utf-8");
 
$xml_code = '<?xml version="1.0" encoding="utf-8"?><tchat></tchat>';
$response_ajax->loadXML($xml_code);
Dedans j'aimerais copier certains noeuds messages et leurs fils du premier document dom.

Code :
1
2
3
4
5
6
7
for($i = $_GET["previous"]+1 ; $i < $tchat_xml->getElementsByTagName("message")->length ; $i++)
{
	$newmessage = $tchat_xml->getElementsByTagName("message")->item($i)->cloneNode(1);
	$response_ajax->getElementsByTagName("tchat")->item(0)->appendChild($newmessage); //ligne 34
}
 
echo $response_ajax->saveXML();
Voici le message que j'ai:
Citation:
Fatal error: Uncaught exception 'DOMException' with message 'Wrong Document Error' in C:\wamp\www\tchat.php:34 Stack trace: #0 C:\wamp\www\tchat.php(34): DOMNode->appendChild(Object(DOMElement)) #1 {main} thrown in C:\wamp\www\tchat.php on line 34
Je ne comprend vraiment pas où est le prob, car je veux simplement ajouter un noeud enfant à un autre noeud.
Je l'ai déjà fait mais le noeud enfant était créé à partir de la méthode DOMDocument->createElement() et là j'avais aucun prob.

Je sais pas si je m'éxprime clairement, donc hésitez pas à demander des eclairsissement.
oFlex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 07h18   #2
Membre éprouvé
 
Avatar de goodpz
 
Inscription : février 2007
Messages : 475
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 475
Points : 474
Points : 474
DOMNode::cloneNode() ne fonctionne que dans le cadre d'un seul et même document.
Ce dont tu as besoins, c'est DOMDocument::importNode()
goodpz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/02/2007, 11h03   #3
Invité régulier
 
Inscription : mai 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 19
Points : 5
Points : 5
Merci en effet ça fonctionne maintenant.
oFlex 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 18h24.


 
 
 
 
Partenaires

Hébergement Web