Pages :
bsr à tous,
j'aimerais pouvoir écrir dans un fichier xml (comme pour un fichier txt )et je ne sais pas du tout comment faire, je demande votre aide svp. Je mets ici le genre de xml que je cherche à pouvoir écrir :

<NODETOP>
	<TITLE>Textes des rubriques</TITLE>
	
	<PISCINE>Un espace de vie reposant, à ne pas rater pour votre détente.</PISCINE>
	
	<RESTAURANT>Une cuisine subtile, mariant les saveurs malagasy et venues d'ailleurs.</RESTAURANT>
</NODETOP>


en fait, aussi pouvoir changer les contenu de "piscine" et "restaurant" à partit d'un formulaire.
Merci d'avance.

Francess
Bonjour,

Je saisi pas bien le problème , tu veux le crée comment enfaite ?

a priori ca dois pouvoir se faire en php avec du fopen fwrite si je me souviens bien Smiley smile
bjr,
en fait le fichier .xml est déjà existant et ce que je cherche c'est de pouvoir réécrir dedans entre les balises, en plus les balises doivent rester et que l'on puisse changer juste le contenu de "piscine"par exemple ou les deux. Smiley rolleyes et que les nouveau contenu txt proviennent d'un formulaire (un système d'administration très très simple)mais c'est le XML que je ne connais pas du tout.

Le site à administrer est un site flash, c'est pour cela qu'il utilise du xml pour les contenus.

merci encore

Francess
@ cescathi » Salut.

Il est un peu difficile de comprendre ta question mais voici.
Tu dis que le site est un Flash ? - Alors voilà.

Flash n'est pas comme PHP. PHP pourra éventuellement créer un fichier XML pure.
Mais pas en Flash. En Flash par contre tu peut insérer un noeud XML entre deux noeuds déjà existant. Il s'agit des méthodes - prependChild() ou appendChild(). Il y en a d'autres effectivement qui pourront être utiles.

Tu peut aussi changer les informations d'un noeud : « PISCINE » ou « RESTAURANT » en utilisant les méthodes appropriées. Mais toujours sur les résultats charger, jamais dans le fichier XML pure.

Tout ce que tu as à faire est de charger ton document XML et de le transformer par la suite. Utilise ton Output Panel (Panneau de sortie) pour une meilleur vue des données charger, tu pourras mieux gérer les résultats des tranformations.

Il s'agit en fait d'une écriture en dur. C'est à dire dans le script directement. Le (*.fla) ou (.*as). Mais Flash ne génère pas de fichier XML pure comme en PHP.

Il peut cependant tranformer un document XML par ajout de noeuds. La valeur de cet ajout peut provenir d'un formulaire. Il serait bien que les résultats du formulaire soit placer dans un Array(). Tu pourra mieux gérer les informations à partir du Array().

Tu trouveras de la documentation sur le sujet à cette adresse » Il s'agit de AS3 ici.
Livedoc Assemblage et transformation d'objet XML en francais.

Và aussi dans le package : flash.xml - Il y a trois classes diponibles pour manipuler le XML.
À cette dresse : Livedoc flash.xml.XMLDocument

Désolé si toutefois je ne t'ai pas aider, nous n'avons que très peu d'information sur tes intentions réelles.

++ zardoz.
Modifié par zardoz (27 Jul 2010 - 19:29)
hum , si c'est en flash que ca dois être fais , j'y connais rien .. ^^ et la reponse audessus est sans doute la bonne


Mais si c'est pas en flash , pour manipuler des fichiers xml ca se fais bien en xslt ou en xquery .

Fin bon , il faudrait précisé bien exactement ce que tu veux pour qu'on puisse t'aider efficacement , en espérant que la réponse précédente était la bonne Smiley lol
@ mathieu1004 »
Eh bien oui tu as raison. Pas assez d'informations ne conduit pas aux solutions d'aide.

@ cescathi »
Il faudrait savoir si l'application est fait en PHP ou Flash ou encore en XML/XSLT.
Ou un mixte de tous ces éléments. Sinon je crois qu'il est en Flash.

Avoir une idée plus juste serait de mise ici - si il est fait en Flash, avoir une idée de la version ou du niveau d'écriture serait une bonne information. Les idées que j'ai énumérer ci-haut sont du niveau AS3 (actionScript 3).

Quoiqu'il en soit si tu veux vraiment modifier le fichier XML, il est préférable de faire avec PHP. Car c'est imposssible avec Flash de modifier le fichier XML. Il ne modifie que les données xml charger.

Mais Flash est en position pour communiquer avec des variables PHP. C'est la seule porte de sortie pour toi, que de faire communiquer Flash et PHP via des variables, afin que PHP puisse modifier directement le fichier XML.

Cependant d'autres façons de faire existe en Flash. Les objets « sharedObject » en est une et les chargements de « variables » à partir de fichier TXT en est une autre. Beaucoup plus simple à gérer.

++ zardoz.
Modifié par zardoz (27 Jul 2010 - 23:55)
salut à vous,
c'est très sympa de m'aider, merci bcp.
en fait je'explique : il y a un site en flash qu'il faudrait que l'on puisse changer les contenus txt via un simple formulaire (rubrique ex: piscine et restaurant doonc un noeuds chanun si je comprends bien Smiley smile ) qui sera en php; les txt sont stockés dans un seul XML comme ce que j'ai mis en haut; les champs du formulaire sera donc piscine:.. et resto:.. et les txt administrés devraient être insérer dans le XML existant en prenant la place des enciens contenus des noeuds....

en fichier .txt je sais que c'est très simple mais avec le XML je ne m'y connais pas du tout... en plus les données txt du site sont donc stockés dans un seul XMl.

voilà, j'éspère que j'ai donné plus d'info et que vous pourriez m'aider plus ...

à bientot.

Merci encore

Francess
Salut,

Si le fichier xml est vraiment simple tu peux directement faire comme si c'était un fichier texte.

//$titre = htmlspecialchars($_POST['titre'], ENT_NOQUOTES, 'UTF-8');
//...
$xml = '<NODETOP>
	<TITLE>'.$titre.'</TITLE>
	<PISCINE>'.$piscine.'</PISCINE>
	<RESTAURANT>'.$restaurant.'</RESTAURANT>
</NODETOP>';
file_put_contents('lefichier.xml', $xml);


Sinon y a SimpleXml.
salut,
merci bcp, je vais l'essayer et je reviendrais pour dire le résultat. en tout cas le xml est vraiment simple donc à 1ere vue, ton code me semble parfait.

Merci encore
Francess
bsr à tous, me revoici Smiley smile
jo_link_noir, en fait ton code est parfait pour ce que je voulais faire merci bcp, j'ai mis un peu de temps à m'y mettre et là c'est bon....

j'ai un autre soucis là c'est cque j'ai traivaillé en local et ce que je faisais fonctionne très bien mais une fois en ligne ça presente cette erreur:
a écrit :
Parse error: syntax error, unexpected T_OBJECT_OPERATOR in /homez.34/domainen/www/BOtexteEn.php on line 113


et à cette ligne 113 le code c'est ceci :
a écrit :
$nodetop= $dom->getElementsByTagName('NODETOP')->item(0);


je ne comprends pas, c'est vraiment mes 1er avec xml alors... Smiley ohwell

merci encore
Francesca
Salut,

C'est une erreur émise quand tu utilise "->" sur une donnée non objet.
Peut-être que getElementsByTagName retourne null, ce qui reviendrait à faire null->item(0), d'où l'erreur.
Met des var_dump pour débugger :
var_dump($dom, $dom->getElementsByTagName('NODETOP'));

Mais si ça marchait en local peut-être qu'il ne trouve tout simplement pas le fichier sur le serveur.
Re,
ah donc la ligne que tu me donne là) peux remplacer la mienne? jveux dire que ça donne la mm valeur... Smiley ohwell
en fait c'est pour récupérer les valeurs qui se trouve dans les noeuds pour les affichés dans mes pages.

Le fichier est bien dans le serveur et en local ça marche parfaitement.
Nan, ça donne juste des informations sur des variables.
Suffi de le mettre avant l'erreur et la corrigé en fonctions des résultats.
j'ai mis ta ligne (telle qu'elle) au dessus le la ligne 113 que disait l'erreur et il 'a rien fait d'autre que de sauter l'erreur de 113 à 114.

je ne comprends pas ...
désolée j'suis vraiment out là!!! Smiley confus

j'ai bien verifier le fichier et son contenu et ils sontg bien dans le serveur, srait il possible que ça soit un pb de serveur? genre un truc à activer ou qlq chose du genre?
en fait je suis en train de chercher et j'ai enlever la ligne 113 et j'ai fait directe comme ceci:
a écrit :

$dom = new DomDocument;
$dom->load("xml/texteRubriqueEn.xml");

(la ligne 113 se trouvait ici)

$accueilContent = $dom->getElementsByTagName('ACCUEIL');
foreach($accueilContent as $accueil)


et ca ne m'affiche plus la mm erreur mais ça donne ceci :
a écrit :


Warning: domdocument() expects at least 1 parameter, 0 given in /homez.34/domainen/www/BOtexteEn.php on line 111

Fatal error: Call to undefined method: domdocument->load() in /homez.34/domainen/www/BOtexteEn.php on line 112

voilà l'avancement jusqu'ici... Smiley decu
je continu de faire des recherches ... et suvre tes conseil.. Smiley biggrin
Marrante l'erreur, il veut un paramètre optionnel Smiley biggol .
Essaye de remplacer
$dom = new DomDocument;
$dom->load("xml/texteRubriqueEn.xml");
par
$dom = domxml_open_file('xml/texteRubriqueEn.xml');

Mais les 2 lignes fonctionnaient avant, non ?
Si ça continu comme ça, tout le code va changer mais ne fonctionnera toujours pas Smiley lol .
slt,
oui... en fait tout mon code fonctionne en local sans me causer de pb et une fois mis sur serveur ça a fait... ce que tu sais quoi Smiley smile

pffff, je ne comprends vraiment rien, j'ai déjà essayer d'autres mannière comme ceci:

$dom = new DomDocument;
$dom->load("xml/texteRubriqueEn.xml");

$accueilContent = $dom->getElementsByTagName('ACCUEIL');
$contenu_accueil= $accueilContent->item(0);
getContent($accueil,$contenu_accueil);

bon je vais remplacer le 2 1re lignes par ta ligne pour voir le resultat.

à tt suite.
francesca
bon j'ai mis à la place des 2 1ère ligne ce que tu m'as donné et voici l'erreur qu'il me donne maintenant:
a écrit :


Fatal error: Call to undefined method: domdocument->getelementsbytagname() in /homez.34/domainen/www/BOtexteEn.php on line 114



dis moi qu'est ce que tous ces erreurs signifient , la dernière par exemple? peut être qu'en comprenant j'arriverais à trouver quelques chose... Smiley sweatdrop


je vais changer de code je penses, essayer autres chose... c'est pour pouvoir recuperer les contenus des neouds pour les afficher 1 par 1.
t'as une idée? un code complet serais sympa Smiley biggrin Smiley biggrin
L'erreur est compréhensible (utilise un traducteur si tu ne comprends pas) mais ça indique que la méthode getelementsbytagname n'existe pas dans un objet domdocument… Il y a un jolie problème quelque pars je ne sais où.
Tu peux toujours essayer avec SimpleXMLElement, dans la doc il y a des exemples pour l'utiliser.
Pages :