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/05/2011, 16h55   #1
Invité régulier
 
Inscription : mars 2010
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 23
Points : 5
Points : 5
Par défaut Copier le contenu des fichiers XML d'un meme rep dans un seul fichier XML !

Bonjour !

Je pense que le titre décrit mon objectif clairement
=> le problème que mon code ne marche pas (pas d'erreur signalés)

voici le code PHP :
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
26
27
28
29
30
31
32
33
34
 
<?php
 
	$old = new DOMDocument();
        $old->load('All_Msgs.xml');
	$old_root = $old->getElementsByTagName( "MSGS" );
 
	$new = new DOMDocument();
	$new->formatOutput = true;
       $new->appendChild( $old_root );
 
	$doc = new DOMDocument();
 
	$rep = opendir('.') or die("Erreur le repertoire existe pas");
 
    while($fichier = @readdir($rep))
    {
        if ($fichier == "." || $fichier == ".." || $fichier == "All_Msgs.xml" ) continue;
 
        if(is_file('./'.$fichier))
        {
			if (preg_match('/.xml/',$fichier))
			{
				$new_root = $new->getElementsByTagName( "MSGS" );
				$doc->load($fichier);
				$NewMsg = $doc->getElementsByTagName( "MSG" );
				$new_root->appendChild( $NewMsg );
				$new->save('All_Msgs.xml');
				echo $new->saveXML();
			}
		}
	}
    closedir($rep);
?>
et voici le code de All_Msgs.xml :

Code :
1
2
3
4
 
<?xml version="1.0"?>
<MSGS>
</MSGs>
et pour les autres fichiers xml qui vont être inclus dans All_Msgs.xml
voici ler format :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<?xml version="1.0"?>
<MSG>
        <MsgName>blabla</NAME>
        <TAG>
               <Name>toto</Name>
               <Value>titi</Value>
        </TAG>
        <TAG>
               <Name>amo</Name>
               <Value>said</Value>
        </TAG>
</MSG>
Aidez-moi SVP !!
amo-said est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 17h00   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
utilise plutot un glob pour trouver tes fichier ca sera plus simple
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 17h01   #3
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Il faut importer le noeud (importNode) dans le nouveau document avant de chercher à l'y placer. Cf un sujet similaire.

PS : inutile de passer par getElementsByTagName pour récupérer la racine (propriété documentElement de l'objet DomDocument) et, vous ne devez pas avoir les erreurs, parce que cette méthode renvoie un objet DOMNodeList et non DOMNode (= erreurs fatales + l'exception DOM_WRONG_DOCUMENT_ERR, je suppose).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 17h06   #4
Invité régulier
 
Inscription : mars 2010
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 23
Points : 5
Points : 5
glob ? c.a.d ?
bon mon problème c pas de trouver les fichier..
mais c'est que le traitement de "COPIER COLLER" d'un xml à un autre..

voici le code simplifier :
Citation:
$old = new DOMDocument();
$old->load('All_Msgs.xml');
$old_root = $old->getElementsByTagName( "MSGS" );

$new = new DOMDocument();
$new->formatOutput = true;
$new->appendChild( $old_root );

$doc = new DOMDocument();

$new_root = $new->getElementsByTagName("MSGS");
$doc->load("msg.xml");
$NewMsg = $doc->getElementsByTagName( "MSG" );
$new_root->appendChild( $NewMsg );
$new->save('All_Msgs.xml');
echo $new->saveXML();
amo-said est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 18h03   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 466
Points : 8 466
http://php.net/manual/fr/function.glob.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 18h15   #6
Invité régulier
 
Inscription : mars 2010
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 23
Points : 5
Points : 5
merci julp !

j'ai trouvé la solution en se basant sur la documentation de importNode

http://php.net/manual/fr/domdocument.importnode.php

@+
amo-said est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2011, 18h18   #7
Invité régulier
 
Inscription : mars 2010
Messages : 23
Détails du profil
Informations forums :
Inscription : mars 2010
Messages : 23
Points : 5
Points : 5
merci également à toi stealth35 pour l'info
see you later !
amo-said 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 16h25.


 
 
 
 
Partenaires

Hébergement Web