08. oktober 2007 - 15:40
Der er
8 kommentarer og 1 løsning
Læs xml med php
Hejsa, jeg har prøvet at læse nogle af de spørgsmål som ellers er herinde og har forsøgt at strikke noget sammen: test.xml: <kursus id="1"> <segment>100</segment> <Pris> <Periode Startdato="01-01-07" Slutdato="03-01-07"> <Pris>400</Pris> <Prisudenmoms Moms="25">300</Prisudenmoms> </Periode> <Periode Startdato="22-06-07" Slutdato="24-06-07"> <Pris>400</Pris> <Prisudenmoms Moms="25">300</Prisudenmoms> </Periode> </Pris> </kursus> test.php: <?php $g_periode = array(); $g_elem = null; function startElement( $parser, $name, $attrs ) { global $g_periode, $g_elem; if ( $name == 'Periode' ) $g_periode []= array(); $g_elem = $name; } function endElement( $parser, $name ) { global $g_elem; $g_elem = null; } function textData( $parser, $text ) { global $g_periode, $g_elem; if ( $g_elem == 'Pris' || $g_elem == 'Prisudenmoms' ) { $g_periode[ count( $g_periode ) - 1 ][ $g_elem ] = $text; } } $parser = xml_parser_create(); xml_set_element_handler( $parser, "startElement", "endElement" ); xml_set_character_data_handler( $parser, "textData" ); $f = fopen( 'test.xml', 'r' ); while( $data = fread( $f, 4096 ) ) { xml_parse( $parser, $data ); } xml_parser_free( $parser ); foreach( $g_periode as $kursus ) { echo $kursus['Pris']." - ".$kursus['Prisudenmoms']." - "; } ?> Det er første gang jeg roder med php,xml,parse - og det er nok også derfor det ikke virker, der sker nemlig ikke noget. Faktisk vil jeg gerne have at den ignorerer <segment> og så henter og udskriver informationen om de forskellige perioder med Startdato, Slutdato, pris, Moms og prisudenmoms. Håber der er en der kan hjælpe eller har et link til en god tutorial, jeg har dog prøvet at læse et par stykker nu På forhånd tak
Annonceindlæg fra Barco
09. oktober 2007 - 12:43
#1
Nå nu har jeg fået strikket noget sammen og får et print_r der hedder: SimpleXMLElement Object ( [@attributes] => Array ( [id] => 1 ) [segment] => 100 [Pris] => SimpleXMLElement Object ( [Periode] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [Startdato] => 01-01-07 [Slutdato] => 03-01-07 ) [Pris] => 400 [Prisudenmoms] => 300 ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [Startdato] => 22-06-07 [Slutdato] => 24-06-07 ) [Pris] => 400 [Prisudenmoms] => 300 ) ) ) ) Men jeg ved så bare ikke lige helt, hvordan jeg får fat i det array der drejer om perioden. Har prøvet med: foreach($xmlData->Periode as $periode) { print("<h2>" . $periode->Pris . "</h2><br />"); } men den vil ikke rigtig :D
09. oktober 2007 - 12:50
#2
Det må være fordi jeg også har gang i multi-dimensionale arrays at jeg koger rundt i det :/
09. oktober 2007 - 21:25
#3
Ingen?
09. oktober 2007 - 21:57
#4
SimpleXMLElement Object ( [@attributes] => Array ( [id] => 1 ) [segment] => 100 [Pris] => SimpleXMLElement Object ( [Periode] => Array ( [0] => SimpleXMLElement Object ( [@attributes] => Array ( [Startdato] => 01-01-07 [Slutdato] => 03-01-07 ) [Pris] => 400 [Prisudenmoms] => 300 ) [1] => SimpleXMLElement Object ( [@attributes] => Array ( [Startdato] => 22-06-07 [Slutdato] => 24-06-07 ) [Pris] => 400 [Prisudenmoms] => 300 ) ) ) ) Har dette nu lidt mere overskueligt, men kan ikke få printet, de forskellige ting, er der en der kan hjælpe? :D
09. oktober 2007 - 22:17
#5
har fået løst problemet, tak mig selv :D
12. oktober 2007 - 14:42
#6
Og hvad var løsningen? Det ville hjælpe vi andre.
13. oktober 2007 - 22:52
#7
F.eks: $xmldato = $xmlData->Pris[0]->Periode[0]["StartDato"];
13. oktober 2007 - 22:53
#8
Og jeg har lavet det med SimpleXML, istedet for det jeg startede ud med ;D
13. oktober 2007 - 22:55
#9
og det er i sig selv rimlig "simpelt": $xmlFileData = file_get_contents("ditxml.xml"); $xmlData = new SimpleXMLElement($xmlFileData); Så har du din fil og skal bare få udskrevet det.
Vi tilbyder markedets bedste kurser inden for webudvikling