pan100 Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 Hei Jeg har en liten øvingsoppgave på skolen, hvor vi skal lese en xmlfil inn i php som et DOMDocument-objekt. Deretter skal vi skrive til det samme objektet og echo/printe ut xml-koden. Det jeg har problemer med er at jeg har satt "formatOutput" som true (en public variabel i DOMDocument) men den skriver allikevel ut koden jeg har lagt til på èn linje. Kan noen se på det og se om de finner ut av det? Her er XML-Filen: (jeg har kalt den workwith.xml) <?xml version="1.0" encoding="UTF-8"?> <users> <user> <name>Ola Nordmann</name> <email>[email protected]</email> <age>33</age> </user> <user> <name>Kari Nordmann</name> <email>[email protected]</email> <age>34</age> </user> </users> ------------- Og her er min php-kode: <?php $doc = new DOMDocument(); $doc->load('workwith.xml'); $doc->formatOutput=true; $users = $doc->getElementsByTagName("user"); echo "UTSKRIFT AV DET SOM ER HENTET INN FRA FIL: <br/>"; foreach ($users as $user) { $name = $user->getElementsByTagName("name")->item(0)->nodeValue; $email = $user->getElementsByTagName("email")->item(0)->nodeValue; $age = $user->getElementsByTagName("age")->item(0)->nodeValue; echo $name . "<br/>" . $email . "<br/>" . $age; } echo "<br/>"; //lager en array som da inneholder en ny user. Skal prøve å gjøre dette som et objekt senere kanskje? $nyebrukere = array( 'name' => 'Herr Potet', 'email' => '[email protected]', 'age' => '25' ); //legger det inn i $doc som er et DOMDocument-objekt //først larer vi rotelementet i en variabel $usersRoot = $doc->getElementsByTagName("users")->item(0); //så lager vi et "user"-element i DOM $u = $doc->createElement("user"); $uname = $doc->createElement("name"); $uname->appendChild( $doc->createTextNode( $nyebrukere['name'] ) ); $u->appendChild($uname); $umail = $doc->createElement("email"); $umail->appendChild( $doc->createTextNode($nyebrukere['email']) ); $u->appendChild($umail); $usersRoot->appendChild($u); echo "XML: <br/>"; echo $doc->saveXML(); ?> ------------ Jeg kjører MAMPserver 1.7.1 med PHP5, har ikke gjort noen konfigurasjonsendringer. På forhånd takk for svar eller forsøk! Bare legger til den outputten jeg får: UTSKRIFT AV DET SOM ER HENTET INN FRA FIL: <br/>Ola Nordmann<br/>[email protected]<br/>33Kari Nordmann<br/>[email protected]<br/>34<br/>XML: <br/><?xml version="1.0" encoding="UTF-8"?> <users> <user> <name>Ola Nordmann</name> <email>[email protected]</email> <age>33</age> </user> <user> <name>Kari Nordmann</name> <email>[email protected]</email> <age>34</age> </user> <user><name>Herr Potet</name><email>[email protected]</email></user></users> Lenke til kommentar https://www.diskusjon.no/topic/1019503-domdocument-og-formatoutput-virker-ikke-helt/
OISNOT Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 Det jeg har problemer med er at jeg har satt "formatOutput" som true (en public variabel i DOMDocument) men den skriver allikevel ut koden jeg har lagt til på èn linje. *snip* <users> ... <user><name>Herr Potet</name><email>[email protected]</email></user></users> ser ikke problemet Lenke til kommentar https://www.diskusjon.no/topic/1019503-domdocument-og-formatoutput-virker-ikke-helt/#findComment-12139170
pan100 Skrevet 9. oktober 2008 Forfatter Del Skrevet 9. oktober 2008 (endret) Det jeg har problemer med er at jeg har satt "formatOutput" som true (en public variabel i DOMDocument) men den skriver allikevel ut koden jeg har lagt til på èn linje. *snip* <users> ... <user><name>Herr Potet</name><email>[email protected]</email></user></users> ser ikke problemet PHP.net formatOutput Nicely formats output with indentation and extra space. Ville jo da tro at outputten ikke kom på èn linje samlet, men i den stilen som det jeg hentet inn kom i. Mulig du har sett litt feil, det er den nederste linjen "Herr Potet" jeg har hentet inn til DOMDocument-objektet. Den outputtes på èn linje. EDIT: Var herr potet ikke potethode. Endret 9. oktober 2008 av pan100 Lenke til kommentar https://www.diskusjon.no/topic/1019503-domdocument-og-formatoutput-virker-ikke-helt/#findComment-12139320
OISNOT Skrevet 9. oktober 2008 Del Skrevet 9. oktober 2008 (endret) Ville jo da tro at outputten ikke kom på èn linje samlet, men i den stilen som det jeg hentet inn kom i. Mulig du har sett litt feil, det er den nederste linjen "Herr Potet" jeg har hentet inn til DOMDocument-objektet. Den outputtes på èn linje. Ahh, vel ... En bra XML utskrift har ikke unødvendig whitespace imnsho. XML skal skrives og leses av programmer. kanskje dette vil funke... $doc = new DOMDocument(); $doc->preserveWhiteSpace = false; $doc->load('workwith.xml'); $doc->formatOutput=true; echo $doc->saveXML(); Endret 9. oktober 2008 av OISNOT Lenke til kommentar https://www.diskusjon.no/topic/1019503-domdocument-og-formatoutput-virker-ikke-helt/#findComment-12139566
pan100 Skrevet 9. oktober 2008 Forfatter Del Skrevet 9. oktober 2008 Ville jo da tro at outputten ikke kom på èn linje samlet, men i den stilen som det jeg hentet inn kom i. Mulig du har sett litt feil, det er den nederste linjen "Herr Potet" jeg har hentet inn til DOMDocument-objektet. Den outputtes på èn linje. Ahh, vel ... En bra XML utskrift har ikke unødvendig whitespace imnsho. XML skal skrives og leses av programmer. kanskje dette vil funke... $doc = new DOMDocument(); $doc->preserveWhiteSpace = false; $doc->load('workwith.xml'); $doc->formatOutput=true; echo $doc->saveXML(); Jaaa, det funker! Sikkert det at den innhentede filen inneholdt en del whitespace og sånn. Takker Lenke til kommentar https://www.diskusjon.no/topic/1019503-domdocument-og-formatoutput-virker-ikke-helt/#findComment-12140788
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å