hallgeirl Skrevet 18. august 2004 Del Skrevet 18. august 2004 (endret) Hei. Jeg har et spørsmål ang. SimpleXML som følger med PHP5. Jeg har lett klart å lese fra en XML fil med SimpleXML, men er det mulig å bruke SimpleXML til å skrive ut til en fil? F.eks hvis jeg vil bruke PHP til å legge til elementer i en xml fil, hvordan kan jeg gjøre det? Hvis det ikke er mulig å bruke simplexml til å gjøre det, er det noen andre "enkle" måter å skrive XML filer på, eller må jeg skrive alt selv med fil-operasjoner i php? På forhånd takk Endret 18. august 2004 av ZiggWarth Lenke til kommentar
Torbjørn Skrevet 19. august 2004 Del Skrevet 19. august 2004 uten at jeg har bruke simplexml før (eller php5) - ser det ut som om dette står omtalt i manualen (som du selvfølgelig leste i først?) kanskje denne funksjonen? SimpleXMLElement->asXML -- Return a well-formed XML string based on SimpleXML element. Lenke til kommentar
dabear Skrevet 19. august 2004 Del Skrevet 19. august 2004 Hvordan skrive til fil med simplexml: <?php $f = simplexml_load_file('http://www.dagbladet.no/rss/oppdatert.xml'); $output = '<span>Head:</span> '; foreach($f->channel as $f2) { $output .= '<div>tittel: ' . $f2->title . '</div>'; $output .= '<div>link: ' . $f2->link . '</div>'; $output .= '<div>beskrivelse: ' . $f2->description . '</div>'; } $output .= '<hr />'; $output .= '<span>Body: </span>'; foreach($f->item as $item) { $output .= '<div>tittel: ' . $item->title . '</div>'; $output .= '<div>link: ' . $item->link . '</div>'; $output .= '<div>beskrivelse: ' . $item->description . "</div><hr />\n\n"; } //Gjøre om alle \n til \r\n (hvis du bruker windows) $output = str_replace("\n", "\r\n", $output); //Nå ligger alt output i variabelen $output, som du kan skrive til fil ved hjelp av file_put_contents file_put_contents('filnavn.suffix', $output); ?> Lenke til kommentar
Torbjørn Skrevet 19. august 2004 Del Skrevet 19. august 2004 han skal lagre xmlfila med et par endringer i xmlstrukturen... Lenke til kommentar
dabear Skrevet 19. august 2004 Del Skrevet 19. august 2004 Da er det jo bare å tilføye noe sånt som: <?php $output .= '<mittelement>TEKST</mittelement>\n\n"; ?> Lenke til kommentar
Torbjørn Skrevet 19. august 2004 Del Skrevet 19. august 2004 dabear: meningen med php sin xml implementasjon er at man lett skal kunne lage strukturerte data fra xml, endre på det, og lett eksportere det tilbake til xml, uten å måtte detaljkode hvert element. Lenke til kommentar
hallgeirl Skrevet 19. august 2004 Forfatter Del Skrevet 19. august 2004 uten at jeg har bruke simplexml før (eller php5) - ser det ut som om dette står omtalt i manualen (som du selvfølgelig leste i først?) kanskje denne funksjonen? SimpleXMLElement->asXML -- Return a well-formed XML string based on SimpleXML element. Ok, på den måten kan jeg skrive XML fila. Da gjenstår det bare å finne ut hvordan jeg kan legge til elementer i xml fila.. (ps: beklager litt sent svar) simplexml_load_file() returnerer jo et objekt, hvor jeg kan hente data sånn: echo $xml->element1->navn; echo $xml->element5->passord; evt. echo $xml->element[0]->navn; echo $xml->element[4]->passord; osvosv. Hvordan kan jeg redigere et objekt? Som en test har jeg laget et xml dokument som dette: <?xml version="1.0" encoding="UTF-8" ?> <users> <user> <username>ziggy</username> <password>gugg</password> </user> <user> <username>julenissen</username> <password>totott</password> </user> </users> Jeg har prøvd å bruke array_push for å muligens legge til et element i $xml->user arrayen, men det gikk ikke. (fikk beskjed om at første argument må være en array, noe jeg mener $xml->user ER, ettersom jeg kan gjøre sånn for å referere til de forskjellige elementene: echo $xml->user[0]->username; echo $xml->user[1]->username; etc.) Her er koden jeg brukte: $xml = simplexml_load_file("test.xml"); class user { var $username; var $password; } $newuser = new user(); $newuser->username = "abcdefg"; $newuser->password = "hijklmnop"; array_push($xml->user, $newuser); echo $xml->asXML(); Er jeg helt på villspor når jeg prøver noe slikt, eller har jeg bare gjort en feil et sted? Takker for alle svar hittil Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå