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
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
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
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
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
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å