IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[PHP-JS] explosion d'un txt en xml !


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 87
    Par défaut [PHP-JS] explosion d'un txt en xml !
    Bonjour à tous
    Je reviens car :
    Je suis désespéré.
    J'ai un fichier texte (voir ce apres) et je dois pouvoir l'exposer et créer avec plusieurs fichiers xml. Est ce possible ? car je n'y arrive pas.
    explode(',',$ligne) voilà le seul conseil que l'on m'a donné ???
    Et là je coince.

    Je vous remercie.

    fichier txt :
    4000;1712333;FR0010029912;SYNE;20060810;11127.35;1.732675
    4000;1712333;FR0010029912;SYNE;20060817;11175.05;1.7772
    4000;1712333;FR0010029912;SYNE;20060824;11185.44;1.77343
    4000;1712333;FR0010029912;SYNE;20060831;11210.9;1.781717
    4000;1712333;FR0010029912;SYNE;20060907;11192.31;1.793219
    4000;1712333;FR0010029912;SYNE;20060914;11212.32;1.7969
    4000;1712333;FR0010029912;SYNE;20060921;11226.71;1.794382
    25000;1019900;FR0010199077;ECO;20060914;119.79;11.209018
    25000;1019900;FR0010199077;ECO;20060915;120.13;11.209018
    25000;1019900;FR0010199077;ECO;20060917;120.13
    25000;1019900;FR0010199077;ECO;20060918;120.31
    25000;1019900;FR0010199077;ECO;20060919;119.84

    et voilà le résultat que je dois obtenir :
    la création d'un fichier : 4000.xml
    <1712333>
    <mvt date ="20060810" achat="11127.35" nbr="1.732675"/>
    <mvt date ="20060817" achat="11175.05" nbr="1.7772"/>
    ...
    </1712333>
    Un fichier idem pour : 25000.xml
    et un fichier valeur.xml
    <valeurs>
    <id="1" nom="4000" numero="1712333" code="FR0010029912" ste="SYNE"/>
    <id="2" nom="25000" numero="1019900" code="FR0010199077" ste="ECO"/>
    ...
    </valeurs>

    est-ce possible par le php de faire cela ? ou est-ce trop difficile ?
    Merci beaucoup

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Je pense que cela est possible toutefois je vous rappelle qu'une balise XML ne peut être définie par un nombre (dans votre exemple on peut voir <1712333> or ce n'est pas permis en théorie) et un document XML n'a qu'une seule racine (à vous lire il serait possible d'en avoir plusieurs).

    J'ai commencé à coder avec PHP5 et l'extension DOM ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?php
    $fichiers_sortie = array();
    $fp = fopen('source.txt', 'r');
    while (!feof($fp)) {
    	$ligne = fgets($fp);
    	$fragments = explode(';', $ligne);
    	if (!isset($fichiers_sortie[$fragments[0]])) {
    		$fichiers_sortie[$fragments[0]] = new DOMDocument('1.0', 'ISO-8859-1');
    	}
    	$dom = $fichiers_sortie[$fragments[0]];
    	try {
    		switch ($fragments[0]) {
    			case 4000:
    				$xpath = new DOMXPath($dom);
    				$id = $xpath->evaluate("/id{$fragments[1]}")->item(0);
    				if ($id == null) {
    					$id = $dom->createElement("id{$fragments[1]}");
    					$dom->appendChild($id);
    				}
    				$mvt = $dom->createElement('mvt');
    				$mvt->setAttribute('date', $fragments[4]);
    				$mvt->setAttribute('nbr', $fragments[5]);
    				$mvt->setAttribute('achat', trim($fragments[6]));
    				$id->appendChild($mvt);
    				break;
    			case 25000:
    				// ...
    				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]);
    }
    ?>

    Bon courage, Julp.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 87
    Par défaut
    Merci
    merci
    merci

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 87
    Par défaut Suite
    Bonjour
    Je viens de tester ton code.
    voilà ce que me retourne le browser :
    Parse error: parse error, unexpected '{' in c:\inetpub\wwwroot\php\explode.php on line 11

    Peux tu me dire pourquoi est ce qu'il m'insulte ??
    Je te remercie beaucoup

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Citation Envoyé par edophie
    Parse error: parse error, unexpected '{' in c:\inetpub\wwwroot\php\explode.php on line 11
    Ce n'est pas mon cas. Vous utilisez bien PHP5 ?


    Julp.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 87
    Par défaut
    oui, j'ai meme essayé sur un site perso pour voir, le provider et c'es jexiste.fr.
    il annonce php4 et 5.
    Pour que l'on soit bien sur, je mets les 2 fichiers à la racine, et j'appelle le fichier php par IE.
    Et toi ? tu n'as pas le message ? Je ne comprend pas.
    Désolé de t'embété mais c'est hyper important pour moi.
    Encore merci

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 87
    Par défaut
    pour info
    J'ai éssayé de mettre " en ' pour les lignes
    $id = $xpath->evaluate("/id{$fragments[1]}")->item(0);
    if ($id == null) {
    $id = $dom->createElement("id{$fragments[1]}");

    $id = $xpath->evaluate('/id{$fragments[1]}')->item(0);
    if ($id == null) {
    $id = $dom->createElement('id{$fragments[1]}');
    mais non, cela n'a rien fait

  8. #8
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    L'erreur est due au fait que vous utilisez non pas PHP5 mais PHP4, car d'après mes tests j'obtiens exactement la même erreur en utilisant PHP4 sur le try (ce qui est normal puisque la gestion des exceptions n'existe pas en PHP4).

    Si vous souhaitez utiliser PHP4, il faut convertir les fonctions DOM vers DOM XML (voir doc) et supprimer la gestion des exceptions (ie try/catch).


    Julp.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 87
    Par défaut
    Merci, je regarde

Discussions similaires

  1. [Tableaux] transformation d'un fichier txt en xml
    Par edophie dans le forum Langage
    Réponses: 1
    Dernier message: 26/09/2006, 12h55
  2. [PHP/DB] site multilingue choix txt/DB ??
    Par speedev dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 04/07/2006, 08h22
  3. Réponses: 1
    Dernier message: 09/06/2006, 17h06
  4. [C#2.0]Reader/writer txt ou xml
    Par chnew dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/04/2006, 01h44
  5. [XML-XSLT-PHP] Récupération de l'heure courante dans xml
    Par mamat- dans le forum XSL/XSLT/XPATH
    Réponses: 12
    Dernier message: 05/08/2005, 16h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo