Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 28/02/2007, 15h43   #1
Invité de passage
 
Inscription : janvier 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 19
Points : 1
Points : 1
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 !
Maurice Fallou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 16h10   #2
Membre chevronné
 
Avatar de nako
 
Ingénieur développement logiciels
Inscription : août 2003
Messages : 581
Détails du profil
Informations personnelles :
Localisation : France

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

Informations forums :
Inscription : août 2003
Messages : 581
Points : 635
Points : 635
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.
nako est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 16h37   #3
Invité de passage
 
Inscription : janvier 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 19
Points : 1
Points : 1
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 :
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...
Maurice Fallou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 16h41   #4
Membre chevronné
 
Avatar de haltabush
 
Développeur Web
Inscription : avril 2005
Messages : 726
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : avril 2005
Messages : 726
Points : 790
Points : 790
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]")
haltabush est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2007, 16h57   #5
Invité de passage
 
Inscription : janvier 2006
Messages : 19
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 19
Points : 1
Points : 1
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.
Maurice Fallou 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 18h39.


 
 
 
 
Partenaires

Hébergement Web