DeMoehn_sm
Grünschnabel
Hallo liebe Benutzer/-innen,
bin gerade an einem ganz kleinen Code-Schnipsel am arbeiten.
Dabei möchte ich mit simpleXML eine XML-Datei lesen (funktioniert einwandfrei) und danach etwas am Inhalt der Datei ändern und diese wieder speichern (funktioniert nur unter anderem Dateinamen).
Der Grund wieso es nicht funktioniert ist mir auch klar.
Ich lade mit
die Datei
, welche ich nach dem lesen nicht mehr schließe. Somit kann ich diese auch nicht überschreiben
.
Lustigerweise kann ich auf meinem lokalen Server die Datei zunächst mit
schließen und dann mit
die neue XML schreiben.
Ich hänge euch mal den kompletten Code dran.
Müsst ihr ja nicht lesen, erwies sich aber oft als Hilfe wenn er da ist.
Ich bräuchte also entweder einen Rat wie man diesen "SimpleXML-Stream" schließt oder wie ich es sonst erledigen kann.
Workaround-Idee: zunächst $file duplizieren, dann $file_dupl lesen und $file überschreiben? <-- sinnvoll?
Ich hoffe auf Tipps, Links, Hilfestellungen oder Codeschnipsel.
Mfg
DeMoehn
bin gerade an einem ganz kleinen Code-Schnipsel am arbeiten.
Dabei möchte ich mit simpleXML eine XML-Datei lesen (funktioniert einwandfrei) und danach etwas am Inhalt der Datei ändern und diese wieder speichern (funktioniert nur unter anderem Dateinamen).
Der Grund wieso es nicht funktioniert ist mir auch klar.
Ich lade mit
PHP:
$xml = simplexml_load_file($file);
PHP:
$file
HTML:
"Operation not permitted"
Lustigerweise kann ich auf meinem lokalen Server die Datei zunächst mit
PHP:
fclose($file);
PHP:
file_put_contents($file, $xml_data);
Ich hänge euch mal den kompletten Code dran.
Müsst ihr ja nicht lesen, erwies sich aber oft als Hilfe wenn er da ist.
Ich bräuchte also entweder einen Rat wie man diesen "SimpleXML-Stream" schließt oder wie ich es sonst erledigen kann.
Workaround-Idee: zunächst $file duplizieren, dann $file_dupl lesen und $file überschreiben? <-- sinnvoll?
Ich hoffe auf Tipps, Links, Hilfestellungen oder Codeschnipsel.
Mfg
DeMoehn
PHP:
// -- XML Laden und Lesen
$file = 'myXML.xml';
if (file_exists($file)) {
$xml = simplexml_load_file($file);
// Benutzer (sichtbar)
$users_visible_conf['amount'] = $xml->users_visible[0]->number;
$users_visible_conf['time'] = $xml->users_visible[0]->timeT;
} else {
exit('Konnte Datei nicht laden.');
}
fclose($file); // <-- geht nur lokal
// -- XML speichern
$xml = xmlwriter_open_memory();
xmlwriter_start_document($xml,"1.0");
xmlwriter_start_element($xml,"user");
xmlwriter_start_element($xml,"users_visible");
xmlwriter_write_element($xml,"number", $fake_users_visible_conf['amount']);
xmlwriter_write_element($xml,"timeT", $fake_users_visible_conf['time']);
xmlwriter_end_element($xml);
xmlwriter_end_element($xml);
xmlwriter_end_document($xml);
$xml_data=xmlwriter_output_memory($xml);
file_put_contents($file, $xml_data);