Avatar billede webstuff Nybegynder
01. februar 2008 - 12:01 Der er 13 kommentarer og
2 løsninger

SimpleXMLElement gem i fil

Hejsa alle eksperten

Jeg sidder og prøver at rode med noget ajax/xml/php hvor jeg via ajax vil kalde en php fil der tilføjer data til en xml fil

Jeg bruger php's SimpleXMLElement til at oprette et nyt opbejkt ud fra den eksisterende fil.
Så kalder jeg.

$fil = new SimpleXMLElement("fil.xml");
$fil->elm->addChild("tag", "cont");

Det virker i og for sig fint nok hvis jeg prøver at udskrive
$fil->elm->children() så bliver det nye barn jeg har tilføjet også udskrevet.
Men det bliver ikke gemt i filen, hvilket jeg godt vil have den til.

Jeg har på fornemmelsen at der er noget i det her jeg har misforstået godt og grundigt.
Nogen der kan guide mig lidt på vej?

Mvh. Andreas
Avatar billede erikjacobsen Ekspert
01. februar 2008 - 14:31 #1
Hvad er din kode til at gemme i filen?
Avatar billede webstuff Nybegynder
01. februar 2008 - 16:01 #2
Det er det der er problemet, jeg har ingen kode til at gemme filen, det var det jeg oprindeligt troede addChild() ville gøre for mig, men der tog jeg fejl.
Så prøvede jeg med noget fopen() og gemme $fil->asXML() i den, men det var ikke nogen synderligt brugbar løsning så den gik jeg væk fra igen.

Mit spørgsmål er egentligt om der ikke er en indbygget funktion i SimpleXMLElemet objektet som kan gemme de ændringer man har lavet?

Mvh. Andreas
Avatar billede erikjacobsen Ekspert
01. februar 2008 - 18:56 #3
Din ikke synderligt brugbare løsning, er vel den du skal bruge.
Avatar billede webstuff Nybegynder
01. februar 2008 - 20:08 #4
Okay, jeg synes bare ikke jeg kunne få det til at virke, fordi at asXML() også returnerer xml's svar på DOCTYPE, (ved ikke hvad den hedder), men noget alla dette:
<?xml version="1.0"?>
Avatar billede erikjacobsen Ekspert
01. februar 2008 - 20:08 #5
Den er nu god at have i sin XML-fil.
Avatar billede webstuff Nybegynder
01. februar 2008 - 20:13 #6
Problemet er at jeg bare vil tilføje en child node til dokumentet ikke hive hele dokumentet ud for at indsætte det igen og overskrive det eksisterende, da jeg ikke ser det som nogen særligt holdbar løsning performance mæssigt
Avatar billede erikjacobsen Ekspert
01. februar 2008 - 20:16 #7
Det er korrekt, men der er vel heller ingen, der siger at XML er et synderligt godt format som database.
Avatar billede webstuff Nybegynder
01. februar 2008 - 20:58 #8
Nej det siger jeg heller ikke.
Grunden til jeg vil lave det er af den simple grund at jeg ville træne mine kompetencer inden for XML+PHP da jeg ikke har ret meget begreb om hvordan det fungerer.
Da jeg højst sansynligvis kommer til at bruge det i mit fremtidige arbejde, omend i en lidt anden sammenhæng, og derfor gerne på forhånd vil vide hvordan det fungerer.

Derfor er det udelukke for "uddannelsesmæssige" grunde at jeg spørger, ikke fordi jeg nødvendigvis vil bruge det til noget konstruktivt lige i dette tilfælde, men evt. i nærmeste fremtid.
Avatar billede erikjacobsen Ekspert
01. februar 2008 - 21:11 #9
Ok, men man kan ikke rette inde midt i en XML-fil: læs ind, lav ændringer, skriv ud igen.
Avatar billede webstuff Nybegynder
01. februar 2008 - 21:47 #10
okay, det var det jeg lidt frygtede. men tak for hjælpen.
du vil vel ikke have points?
Avatar billede erikjacobsen Ekspert
01. februar 2008 - 21:47 #11
Nej tak, jeg samler ikke.
Avatar billede arne_v Ekspert
02. februar 2008 - 04:22 #12
XML filer er ikke specielt godt til opdateringer. Du er nødt til at overskrive en fil
hver gang du opdaterer denne.

Det kan du måske godt leve med hvis du splitter dine data op i flere små XML filer.

Men hvis du så begynder at snakke om flere samtidige brugere af filerne, så knækker
filmen igen.

Derfor database til det formål.
Avatar billede webstuff Nybegynder
02. februar 2008 - 16:22 #13
Okay, tak for det begge to.
Skal vi dele i porten arne?
Avatar billede arne_v Ekspert
02. februar 2008 - 17:21 #14
OK - selvom jeg nu synes at det er begrænset hvad jeg har bidraget med.
Avatar billede webstuff Nybegynder
04. februar 2008 - 00:16 #15
Tja.. Når nu erik ikke vil have point, så kan du lige så godt få lidt af dem.
Jeg har rigeligt til hvad jeg skal bruge:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester