View Full Version : Programma per modificare xml
The_Nightmare
09-08-2006, 19:54
E possibile creare un programma che si connetta al server dove e situato un file xml e ne modifichi i campi?? se si con che linguaggio conviene costruirlo?
Grazie
non è che la tua specifica sia molto generosa eh? :mbe:
se il tuo intento è quello che penso di aver capito, e se il server in questione è un server web, ad esempio Apache, il linguaggio che secondo me ti conviene di più è PHP, ma è un discorso un po' campato in aria perché essendo Xml un formato interoperabile tra più programmi e più linguaggi, è difficile dire quale sia il linguaggio più adatto.. usa quello che conosci di più :)
The_Nightmare
10-08-2006, 20:08
praticamente sto facendo un sito ad un amico....questo sito e fatto in flash e per il servizio di news ho usato un file xml.....per aggiungere/rimuovere queste news bisognerebbe entrare nella gestione dei file e modificare il codice xml....io volevo realizzare una cosa piu intuitiva e semplice come un programma che dato l'url del file xml e le cose da inserirci lo modificasse.....e possibile fare una cosa del genere con qualsiasi linguaggio???
Grazie
ok ora ho capito bene :)
e possibile fare una cosa del genere con qualsiasi linguaggio???
ora che mi è chiaro che è un server web posso essere più preciso: il mio consiglio è creare uno script php che realizzi ciò che vuoi fare.. è proprio un uso per il quale php si presta benissimo, naturalmente il server dovrà avere il supporto per l'interprete php (se non sai di cosa sto parlando basta che chiedi al tuo hoster)
se la risposta è affermativa bene così, altrimenti con pochi euri l'anno ce l'hai e ti fai l'upgrade
qui (http://www.php.net/docs.php) trovi la documentazione ufficiale sul php nelle lingue e nei formati che preferisci (se usi windows ti consiglio il chm(il formato delle classiche guide online di windows))
dai un'occhiata particolare alle funzioni sui files.. se conosci un po' di C spicciolo vedrai che non troverai alcuna difficoltà ad imparare il linguaggio..
il tuo script dovrà semplicemente aprire il file in scrittura, ed appendere la nuova stringa che sarà il nuovo pezzetto di xml, cioè la nuova news (nuova news..mah :confused: ) ed il gioco è fatto..vedrai che non è difficile..
p.s. accertati che il tuo file .xml si trovi in una cartella scrivibile da apache, infatti se uno script accede al filesystem (cioè nel tuo caso ai files sul server) il processo che deve avere i diritti è colui che esegue lo script, cioè il server, ad esempio Apache, il quale solitamente ha utente e gruppo "nobody"..cmq controlla
The_Nightmare
11-08-2006, 17:31
senti non e che puoi darmi una mano....perche non ci capisco una bega.....io ho trovato una cosa gia fatta che fa quello che voglio...il fatto e che c'e anche uno pezzo di asp oltre al php....e altervista non supporta l'asp...si puo interpretare questo script asp in php?
si puo interpretare questo script asp in php?
php ed asp sono 2 linguaggi che hanno la stessa funzione, ma essendo 2 linguaggi hanno sintassi diverse ;)
perciò uno script asp non si può interpretare in php, ma si può tradurre in php, perciò dovresti innanzitutto postare lo script in modo da cercare di portarlo al php
The_Nightmare
11-08-2006, 18:25
eccolo qui......grazie mille.....sto diventando pazzo con sta storia...... :mc:
ok allora premetto che non conosco la sintassi asp quindi vedo di decifrare a grandi linee e di integrare personalmente:
<?php
//importo il nome del file attaccando il path
$path="http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).$_REQUEST['filexml'];
//controlla se il file esiste, è accessibile in scrittura e lo apre
if(is_writable($path))
$handle=fopen($path,'a');
else die("il file non esiste!");
//salva copia di backup
if(!(copy($path,$path.".bak"))
die("Copia di backup non riuscita!");
//eseguo urlencode
//anche testoxml è passata da flash giusto?
$new_string=urlencode($_REQUEST['testoxml']);
//scrive la nuova linea
//NB i tre uguali non sono un errore di battitura
if(!fwrite($handle,$new_string) ===FALSE)
die("non riesco a scrivere il file");
echo"fatto!";
fclose($handle);
?>
non l'ho testato quindi prova e sappimi dire dettagliando bene gli errori ;)
The_Nightmare
11-08-2006, 19:45
Parse error: syntax error, unexpected T_EXIT in /membri2/nick88/Dark/Editor/leggitutto.php on line 13
mi da questo errore.....questo (http://flash-mx.html.it/tutorial/view_tutorial.asp?idtutorial=12) e il tutorial della cosa che voglio fare......
aggiungi una ) alla fine dell'if ;)
un'editor in flash :mbe:
comunque non l'ho letto tutto ma ho circa capito il concetto..
l'idea di usare php e asp cmq è assurda visto che essendo due linguaggi praticamente succedanei si dovrebbe usare php o asp..in più non hai il supporto per asp (per fortuna :D )
io ti dico subito che avrei fatto tutto in php magari con un form che caricava al suo interno la pagina e il tastino "salva" che salvava le modifiche, sarà che flash non lo sopporto proprio :muro: :muro:
ad ogni modo ritesta così lo script e fammi sapere e vediamo se per gradi ci avviciniamo a ciò che volevi fare :)
The_Nightmare
12-08-2006, 00:15
ora mi dice che non trova il file.....cmq non e che hai msn cosi ci parliamo piu velocemente?
msn...:eekk: :eekk: :eekk: :eekk:
mi dispiace ma quando sento o vedo la lettera m affiancata alla lettera s mi viene una specie di orticaria.. :mad:
se vuoi ho un canale irc dove trovarci
The_Nightmare
12-08-2006, 00:49
hihihih....ok dammi il canale......
irc.syrolnet.org porta 6667 canale #Slackware
ci vediamo li tra 5 minuti perché ora devo assentarmi un secondo
The_Nightmare
12-08-2006, 01:05
io sono entrato....qual'e il tuo nick che magari non sono entrato in quello sbagliato
eccomi qui..
come promesso ti ho fatto lo script che fa tutto ciò di cui hai bisogno..
devi integrarlo nel tuo sito in questo modo:
lo metti nella stessa dir nella quale si trova il/i file xml
per giungere a questa pagina con il file corretto aperto da modificare, devi creare un link a questa pagina di questo tipo:
se ad esempio sei nella pagina index.htm e vuoi fare un link alla pagina per modificare l'xml dovrai mettere questo tag:
<a href="modifica_xml.php?filename=<nome_file>">modifica il file <nome_file></a>
dove <nome_file> è il nome del tuo file xml..puoi fare tanti links quanti sono i files ed il gioco è fatto..
tra parentesi puoi modificare anche files non xml quali ad es. .txt..
fammi sapere se incontri difficoltà..cmq non ti potrò risopndere per qualche ora..
in bocca al lupo
p.s. a titolo informativo ti comunico che esisterebbero degli appositi costrutti in php per lavorare con il DOM Xml, ma siccome ho capito che non sei proprio pratico ;) intanto è meglio fare così :D
The_Nightmare
12-08-2006, 15:51
ci deve essere un piccolo errore...perche quando salva il file risulta cosi....<news dato=\"Nuova versione del sito in flash\" datas=\"16-09-04\"></news >....
è perché fa l'escaping dei caratteri "
commenta l'urlencode..
The_Nightmare
13-08-2006, 02:54
hem....non vedo nessun url encode....
ah già scusa facevo confusione con la versione vecchia :p
ho provato un file con le virgolette ma a me non da nessun problema..non saprei perché a te si comporta così :eek:
cmq intanto puoi aggirare la difficoltà sostituendo questo pezzo:
//salva le modifiche
if(!fwrite($handle,$_POST['file_content']))
die("errore nel salvataggio del file!");
con questo:
//salva le modifiche
$file_content=ereg_replace('/"','"',$_POST['file_content']);
if(!fwrite($handle,$file_content))
die("errore nel salvataggio del file!");
fammi sapere se così va ;)
The_Nightmare
13-08-2006, 14:33
nulla....continua a farmi la stessa cosa
allora, tanto per capire a che punto vengono cacciati quegli escape, prova a fare un echo di $file_content dopo l'ereg_replace
The_Nightmare
14-08-2006, 12:00
<elenco>
<news dato=\"Nuova versione del sito in flash\" datas=\"16-09-04\"></news >
<news dato=\"Nuova procedura installazione per sast1com\" datas=\"16-09-04\"></news >
<news dato=\"Eliminato login e registrazione per downloads\" datas=\"13-09-06\"></news >
<news dato=\"Prova modifica news\" datas=\"12-08-06\"><news >
<news dato=\"Prova\" datas=\"15-02-02\"></news>
</elenco>
questo e come risulta il file xml dopo aver clicato su salva
ho fatto una rapida ricerca ed ho scoperto che il tuo problema deve essere dato dall'opzione magic_quotes impostata a on :mbe:
per evitare di farti cambiare opzioni di php vedi se risolvi così:
al posto di ciò che ti avevo fatto riscrivere, cioè
//salva le modifiche
$file_content=ereg_replace('/"','"',$_POST['file_content']);
if(!fwrite($handle,$file_content))
die("errore nel salvataggio del file!");
scrivi questo:
//salva le modifiche
$file_content=stripslashes($_POST['file_content']);
if(!fwrite($handle,$file_content))
die("errore nel salvataggio del file!");
questa funzione rimuove tutti i caratteri / di escape e, siccome lettura e scrittura su file avvengono in maniera binaria, non dovresti mai avere la necessità di fare escape (ad es. per fare il carattere / basta che scrivi / e non //)
prova e dimmi :)
The_Nightmare
14-08-2006, 14:55
ok....risolto tutto....grazie mille
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.