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 :

[XML-XSLT]Modifier un fichier XML grâce à un formulaire


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 19
    Points : 10
    Points
    10
    Par défaut [XML-XSLT]Modifier un fichier XML grâce à un formulaire
    Bonjour,

    J'expose de suite mon problème.
    Je récupère un fichier XML valide. Ce fichier je le transforme avec un XSLT affichant un formulaire contenant les données du XML. Ce que j'aimerais, c'est modifier mon XML d'origine quand je modifie une valeur dans mon formulaire et que je le valide.

    J'ai essayé de faire une recherche sur les forums, il y a plein de choses qui peuvent sûrement m'aider mais je ne trouve rien qui correspond exactement à mon problème, et comme je débute en XML avec PHP (en XML tout court d'ailleurs), je suis un peu perdu dans toutes ces solutions.
    Néanmoins, j'ai l'impression que je suis obligé de créé un nouveau fichier XML avec mes nouvelles valeurs (et effacer l'ancien si nécessaire). Mais ça me parait bien lourd et fastidieux....


    Merci par avance pour vos réponses !

  2. #2
    Membre éclairé Avatar de nako
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2003
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2003
    Messages : 577
    Points : 663
    Points
    663
    Par défaut
    Bonjour,
    quelle version de PHP utilises-tu ? PHP 5 ?

    Un fichier XML est un fichier texte.
    En utilisant un parser XML, tu auras des fonctions qui te permettrons de parcourir ton arbre XML, de le modifier, etc ... mais il faut bien voir que ce sera fait sur un objet chargé en mémoire (l'arbre XML) et non sur le fichier.
    Il faudra à un moment donné réécrire ton fichier XML (fichier texte) avec les modifications effectuées.
    Maintenant, je ne sais pas si il existe des fonctions pour ça, il est possible que ça existe et que ces opérations de "j'efface le fichier et je le réécris" soient transparentes pour l'utilisateur.

    J'espère que je ne t'ai pas trop embrouillé,
    Nako.

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Non ça ira :-)

    Déjà, merci de la réponse.

    Alors j'utilise PHP5. J'ai regardé les fonction DOM et simpleXML mais bon.... j'ai déjà du mal à afficher 1 seule donnée.

    Donc du coup ce que j'avais pensé faire, techniquement :
    Je charge mon document XML, je trouve l'élément que je veux modifier dans l'objet, je modifie et je réécris le fichier XML d'après l'objet.
    En PHP vite fait (juste les fonctions DOM), ça donnerait en gros :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $xml = new domDocument();
    $xml->load('xml/fichier.xml');
     
    $element = $xml->getElementsByTagName('element');
    //??? changement de la donnée, mais je ne sais pas comment
     
    $xml->save('nouveau_fichier.xml');
    (je ne sais pas si très clair... on est bien d'accord que ce n'est pas fonctionnel, c'est juste un mixe algo/code/prose).

    Je suis dans le bon comm ça ?
    Sauf que j'arrive pas à récuperer l'élément. Et ça me parait toujours bien lourd si je dois faire ça pour chaque champs...

  4. #4
    Membre éclairé Avatar de haltabush
    Profil pro
    Développeur Web
    Inscrit en
    Avril 2005
    Messages
    726
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2005
    Messages : 726
    Points : 835
    Points
    835
    Par défaut
    Tu n'es pas obligé de le faire pour chaque champs, tu n'a qu'à charger ton fichier 1 fois, faire toutes tes modifs, et à la fin tu fait appel à la méthode save().
    Ca ne devrait pas être si "lourd" que ça ^^

    J'oubliais : si tu as du mal à récupérer tes éléments, mets toi à XPath... Ca te permet de récupérer des champs particuliers selon divers conditions (par exemple, si tu as plusieurs éléments <dossier> qui on un attributs id, tu peux faire $xPathQuery="//dossier[@id=lavaleurquetuveux]")

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Merci,
    Oui oui, je charge le document qu'une fois.
    Donc a priori je suis sur la bonne voie You-pi-ah

    Pour XPath, je vais regardé ça aussi de plus près alors. Mais le problème c'est que les documents XML que je vais devoir traiter ne contiennent pas d'id. Mais y'a sûrement d'autres fonctions qui me seront utiles.

    Merci encore.

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/12/2008, 13h38
  2. Réponses: 3
    Dernier message: 06/08/2007, 03h44
  3. [XSLT] Importer un fichier xml (i18n) dans un fichier xsl
    Par cassy dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 11/04/2007, 11h38
  4. [XML][XSLT]taille de fichier xml et transformation
    Par guil1 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 24/11/2006, 19h15
  5. Importer le contenu un fichier xml dans un autre fichier xml
    Par gedeon555 dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 27/07/2005, 11h49

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