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 20/06/2006, 13h53   #1
Invité régulier
 
Inscription : juin 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 46
Points : 5
Points : 5
Par défaut [DOM] importer un noeud d'un fichier xml et le coller dans un autre fichier

bonjour à tous,


je souhaiterais importer un noeud d'une page xml et l'inserer au sein d'un 2e fichier xml en utilisant la fonctionimporteNode et insertBefore. ca fait 2 jours que je tourne ne rond, je ne vois vraiment pas ou ca cloche, voila mon code:
il s'agit d'un classe ou les données membres sont :

Code :
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
//1er xml
private $containedDocXml;
private $containedXPath;
 
//2e xml
private $containerDocXml;
private $containerXPath;
 
private $identifier;
 
 
//je cherche le noeud a exporter dans le 1er xml
$exportedNode = $this->containedXPath->query("//imscp:manifest/imscp:organizations/imscp:organization");
 
//j'importe le noeud du 1er xml dans le 2e xml
$importedNode = $this->containerDocXml->importNode($exportedNode->item(0),true);
 
//je cherche l'endroit ou le coller dans le 2e xml
$insertBeforeThisNode = $this->containerXPath->query("//imscp:manifest/imscp:organizations/imscp:organization/imscp:item[@identifier='$identifier']");
 
//la racine du 2e xml
$racine = $this->containerDocXml->documentElement;
 
//je l'insere avant ce noeud dans xml2
$racine->insertBefore($importedNode,$insertBeforeThisNode->item(0));
voila, j'ai un message d'erreur "'Not Found Error', qui m'aide pas vraiment.
j'ai tout testé ,ts les parametres sont bons mais ca bloque au niveau du insertBefore, je pense qu'il y a un probleme au niveau du 2e parametre '$insertBeforeThisNode->item(0)' ...

je suis vraiment bloqué et désespéré alors toutes aides sera la bienvenue
merci d'avance à tous
iznogoud36 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 12h25   #2
Rédacteur
 
Avatar de Swoög
 
Inscription : janvier 2003
Messages : 6 053
Détails du profil
Informations personnelles :
Âge : 24

Informations forums :
Inscription : janvier 2003
Messages : 6 053
Points : 7 144
Points : 7 144
Envoyer un message via MSN à Swoög Envoyer un message via Skype™ à Swoög
Salut !

pourrais-tu donner le message d'erreur en entier s'il te plaît ?
__________________
Rédacteur "éclectique" (XML, IRC, Web...)
Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
pensez à la balise [code] (bouton #) et au tag (en bas)
Swoög est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 12h55   #3
Invité régulier
 
Inscription : juin 2006
Messages : 46
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 46
Points : 5
Points : 5
salut ,

en fait j'ai fais une classe d'erreur
Citation:
echo 'Message: ' . $e->getMessage() . '<br />';
echo 'Code: ' . $e->getCode() . '<br />';
qui me renvoit:
Citation:
Message: Not Found Error
Code: 8
sinon si je capte pas l'erreur ,j'ai ca :
Citation:
Uncaught exception 'DOMException' with message 'Not Found Error' in C:\xxx\xxx\XmlAssembler.php ....
en fait je pense vraiment que ca vient du 2e parametre de la fonction insertBefore car si j'écris :
Code :
$racine->insertBefore($importedNode);
au lieu de :
Code :
$racine->insertBefore($importedNode,$insertBeforeThisNode->item(0));
l'insertion se fait bien mais en fin du fichier xml comme si c'etait un appendChild.

De plus si je fais
Code :
$racine->insertBefore($importedNode,$racine->firstChild);
la aussi ca marche bien il me le rajoute au debut

je me pose la question si la query Xpath qui me donne $insertBeforeThisNode :

Code :
1
2
//je cherche l'endroit ou le coller dans le 2e xml
$insertBeforeThisNode = $this->containerXPath->query("//imscp:manifest/imscp:organizations/imscp:organization/imscp:item[@identifier='$identifier']");
ne me donne pas en fait une copie et pas le noeud lui meme. car si j'affiche le resultat dans $insertBeforeThisNode, il y a bien le noeud que je recherche...

j'espere que j'explique bien et que tu comprends ce que je veux dire.
en tout cas merci du fond du coeur pour ton aide
iznogoud36 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 04h09.


 
 
 
 
Partenaires

Hébergement Web