XML Post mit PHP auslesen und in ein Array speichern

MiMi

Erfahrenes Mitglied
Hi,

also ich sende Daten von einem Midlet per POST im XML Format an den Server. Hier sollen die Daten nun ausgelesen werden und bestimmte Sachen in ein Array gespeichert werden.

ZB XML

Code:
<response>
	<vote scenetype="sc2" title="Vote Top">
		<choice ID="3"> song3 </choice>
	</vote>
	<vote2 scenetype="sc2" title="Vote Flop">
		<choice ID="2"> song 2 </choice>	
		<choice ID="4"> song 4 </choice>
	</vote2>

	<feedback scenetype="sc3" title="Feedback">
		<choice ID="1"> my feedback </choice>	
		<choice ID="2"> adres 123 </choice>
	</feedback>
</response>

Nur wie les ich jetzt nur bestimmte Sachen aus. Das ich zb fuer jeden Unterteil von response nen eigenes Array mache. Und dort steht dann zb

Code:
arrayname=vote

type	sc2
3	song3

arrayname=vote2 

type	sc2
2	song2
4	song4

arrayname=feedback

type	sc3
1	myfeedback
2	adres123

Waere so was moeglich?

Also bin absoluter PHP anfaenger :( und hab echt keine Ahnung. Bin nur soweit das ich den ganzen POST ausgeben kann.

Code:
      $handle = fopen('php://input', 'r');
        $http_raw_post_data = '';
        while( !feof($handle) ) {
            $http_raw_post_data .= fread($handle, 8192);
        }
        fclose($handle);
        var_dump($http_raw_post_data);
Und selbst das versteh ich net ma richtig, hab ich auch nur hier mal hilfe bekommen.
 
Haben PHP 4, also wird das wohl nix :(

Achja, hab nen Beispiel wie man ne XML DATEI ausliest

PHP:
   if (!$dom = domxml_open_file($xmlFile, DOMXML_LOAD_PARSING, $error ) ) {
        echo "Error parsing m2cms configuration file (".print_r($error,1).")\n";
        exit;
    }

    //Process content
    $elements = $dom->get_elements_by_tagname("flyer");
    processElement( $elements[0] );
...

Nur da handelt es sich um eine richtige *.xml datei, die habe ich nun ja nicht. Aber kann man den Post nicht irgendwie genauso bearbeiten?
 
Zuletzt bearbeitet:
So, also das funktioniert erstma soweit :D Danke erstma,


Nur nun sitz ich beim naechsten Problem
PHP:
        $elements = $dom->get_elements_by_tagname("flyer");
        $element = $elements[0];
        if ($element->type == XML_ELEMENT_NODE) {
            echo "element 0: ". $element->tagname;
        } else {
            echo "NONE XML element node";
             //foreach( $element->attributes() as $attribute ) {
                //echo "content :". $attribute->get_content();
                //echo "name :". $attribute->name;
           // }
        }
Der kommt in das else und gibt auch
NONE XML element node
aus, aber nur wenn ich das foreach auskommentiere, nehm ich das wieder rein, sagt der immer "server not available"?! Stimmt was mit dem foreach nicht? Oder hab ich da einfach was falsch eingelesen?


Edit: OH hab den Fehler gefunden, so ein dummer Fehler, sorry, dieses get_elements_by_tagname("flyer"); war der tagname falsch :S
 
Zuletzt bearbeitet:
Zurück