Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
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 03/10/2006, 15h20   #1
Invité régulier
 
Inscription : août 2006
Messages : 87
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 87
Points : 8
Points : 8
Par défaut Comment remplir un xml à partir d'un fichier texte

J'ai un fichier xml qui change tous les jours.
Il porte tous les jours le meme nom "CQFIC270.TXT"
Actuellement, j'ai un fichier qui me permets d'éclater ce fichier de base en plusieurs autres fichiers XML.
Ce que je n'arrive vraiment pas à faire c'est comment lire le fichier de base, l'éclater comme actuellement mais sans écraser les petits fichiers. L'action que je n'arrive pas à faire, c'est lire les petites fichiers : si les lignes sont identiques = rien sinon je rajoute à la suite les nouvelles valeurs ???

voici le fichiers php qui devrait faire son travail :

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
35
36
37
38
39
40
41
42
43
44
45
<?php  
$fichiers_sortie = array();  
$fp = fopen('CQFIC270.TXT', 'r');  
 
while (!feof($fp)) {  
    $ligne = fgets($fp);  
    $fragments = explode(';', $ligne);  
 
    $nomFichier = $fragments[0] . $fragments[1]; 
 
    if (!isset($fichiers_sortie[$nomFichier])) {  
      $fichiers_sortie[$nomFichier] = new DOMDocument('1.0', 'ISO-8859-1');  
    } 
 
    $dom = $fichiers_sortie[$nomFichier];  
    try {  
        //switch ($fragments[2]) {  
        //    case $fragments[2]:  
                $xpath = new DOMXPath($dom);  
                //$id = $xpath->evaluate("/id{$fragments[2]}")->item(0);  
                $id = $xpath->evaluate("/{$fragments[2]}")->item(0); 
                if ($id == null) {  
                    //$id = $dom->createElement("id{$fragments[2]}");  
                    $id = $dom->createElement("{$fragments[2]}"); 
                    $dom->appendChild($id);  
                }  
                $mvt = $dom->createElement('mvt');  
                $mvt->setAttribute('Libelle', $fragments[3]);  
                $mvt->setAttribute('dateValeur', $fragments[4]);  
                $mvt->setAttribute('Valeur', $fragments[5]);  
                $mvt->setAttribute('Volatilite', trim($fragments[6]));  
                $id->appendChild($mvt);  
         //       break;  
 
        //}  
    } catch (Exception $e) {  
        die('Ligne ' . $e->getLine() . ' : ' . $e->getMessage());  
    }  
}  
fclose($fp);  
foreach ($fichiers_sortie as $k => $v) {  
    $v->save("$k.xml");  
    unset($fichiers_sortie[$k]);  
}  
?>

voici le fichier qui est lu le jour n-1 jour :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CQFIC270.TXT
8025;29000;FR0000293000;BT;20060924;9447.04;0.046695
8025;29000;FR0000293000;BT;20060925;9447.82;0.046695
8025;29000;FR0000293000;BT;20060926;9448.62;0.046695
8025;29000;FR0000293000;BT;20060927;9449.42;0.046695
8025;29000;FR0000293000;BT;20060928;9450.2;0.046695
8025;29000;FR0000293000;BT;20060929;9452.65;0.046695
8025;29000;FR0000293000;BT;20061001;9452.65
4025;1712000;FR0010029000;ECO;20060817;11175.05;1.7772
4025;1712000;FR0010029000;EC;20060824;11185.44;1.77343
4025;1712000;FR0010029000;ECO;20060831;11210.9;1.781717
4025;1712000;FR0010029000;ECO;20060907;11192.31;1.793219
4025;1712000;FR0010029000;ECO;20060914;11212.32;1.7969
4025;1712000;FR0010029000;ECO;20060921;11226.71;1.794382
4025;1712000;FR0010029000;ECO;20060928;11260.29;1.776394
le lendemain : j'ai le nouveau fichier
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CQFIC270.TXT
8025;29000;FR0000293000;BT;20060929;9452.66;0.046695
8025;29000;FR0000293000;BT;20061001;9452.67
8025;29000;FR0000293000;BT;20061002;9447.04;0.046695
8025;29000;FR0000293000;BT;20061005;9447.82;0.046695
8025;29000;FR0000293000;BT;20061006;9448.62;0.046695
8025;29000;FR0000293000;BT;20061007;9449.42;0.046695
8025;29000;FR0000293000;BT;20061008;9450.2;0.046695
4025;1712000;FR0010029000;ECO;20060907;11192.31;1.793219
4025;1712000;FR0010029000;ECO;20060914;11212.32;1.7969
4025;1712000;FR0010029000;ECO;20060921;11226.71;1.794382
4025;1712000;FR0010029000;ECO;20060928;11260.29;1.776394
4025;1712000;FR0010029000;ECO;20061017;11175.05;1.7772
4025;1712000;FR0010029000;EC;20061024;11185.44;1.77343
4025;1712000;FR0010029000;ECO;20061031;11210.9;1.781717
En synthèse :
Le script actuelle fonctionne car il crée bien 2 fichiers XML
MAIS je n'arrive pas le lendemain à comparer chacun de ces fichiers et à lui ajouter les lignes en plus.


Un grand grand merci au pro.
Fichiers attachés
Type de fichier : php exp.php (1,5 Ko, 1 affichages)
Type de fichier : txt CQFIC270.TXT (765 octets, 1 affichages)
Type de fichier : txt CQFIC270B.TXT (765 octets, 1 affichages)
edophie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2006, 16h11   #2
Invité régulier
 
Inscription : août 2006
Messages : 87
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 87
Points : 8
Points : 8
On m'a parlé d'employer la fonction "fopen"
Mais je ne suis pas, non vraiement, pas assez pro pour dire
le nouveau texte = si different dans les petites fichiers alors ajouter sinon rien.

Merci
edophie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2006, 23h05   #3
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Ce qui serait bien ce sera de fixer ce qui change vraiment. J'explique pourquoi . Il existe la fonction explode qui à partir d'une ligne crée un tableau et il y a une autre fonction in_array qui permet de savoir si un élément appartient à ce tableau. Donc tu pourrais peut etre faire avec ces fonctions (C'est une solution parmis tant d'autres).

Pour plus d'infos voici des exemples d'utilisations des fonctions citées plus haut.
Comment tester l'existence d'une valeur dans un tableau ?
morceller une chaîne ?
Kerod 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 22h37.


 
 
 
 
Partenaires

Hébergement Web