# auslesen einer XML Datei via PHP



## virtualsix (9. Januar 2003)

An alle PhP-Freaks,

ich programmiere noch nicht lange PHP und habe mir gleichmal zur AUfgabe gemacht, via PHP eine XML Datei welche auf einem entfernten Server liegt auszulesen.

Wie kann ich das genau machen ?


----------



## Christian Fein (9. Januar 2003)

Du bestimmst einen parser durch den aufruf vom 

$xm._parser = xml_parser_create();

Danach musst du die Handler bestimmen
also z.b den ElementHandler

bool xml_set_element_handler ( resource parser, string start_element_handler, string end_element_handler)

Das heisst 
xml_set_element_handler($xml_parser,"startNode","endNode");

Damit wird beim auftreten einer XML Node beim öffneenden Tag die Funktion startNode() aufgerufen und zwar mit folgenden Paramtern(resource Parser, String name, String[] Attributes)

das heisst du kannst in dieser funktion mit foreach die Attribute durchlaufen usw.

end node ist ähnlich nur ohne Attribute.

Dann musst du einen character_data_handler bestimmen der deine Daten entgegennimmt

xml_set_character_data_handler($xml_parser,"getData");

Die Funktion getData();
 nimmt die Parameter ressource Parser und text auf

wenn die beiden wichtigsten Handler (SAX definiiert eigentlich noch ein paar mehr)
alle definiert ist kannst du
xml_parse($xml_parser,$xmldata);
aufrufen 


naja ist etwas umfangreicher die XML Parsung. Nicht als Anfänger Lern thema geeignet aber ziemlich interressant


----------



## Chino (9. Januar 2003)

schau mal hier, vielleicht hilft dir dieser artikel weiter. 



cyas,
chino


----------



## Chino (13. Januar 2003)

moin!

ich hab jetzt auch nochma ne frage: das o.g. script funzt ja ganz jut, nur wie is das jetzt, wenn ich keine "statische" xml datei hab, sondern eine xml datei, die entsprechend einer query daten aus der db holt und mir die daten xml-formatiert ausgibt?


----------



## Christian Fein (13. Januar 2003)

Nun in irgendeiner Weise werden die Daten letztendlich ja an das Script gesendet.
Also entweder als Datei die gelesen werden kann oder als Stream der ebenso gelesen werden kann.

Die funktion 
bool xml_parse ( resource parser, string data [, bool is_final])

parst einen String. 
Diesen String kannst du über eine URL z.b erhalten


```
<?php
$XMLData = "";
$fp = fsockopen ("www.testDomain.com/xmldata.xml", 80, $errno, $errstr, 30);
if (!$fp) {
    echo "$errstr ($errno)<br>\n";
} else {
    fputs ($fp, "GET / HTTP/1.0\r\nHost:  w ww.testDomain.com\r\n\r\n");
    while (!feof($fp)) {
        $XMLData .= fgets ($fp,128);
    }
    fclose ($fp);
}
?>
```


Und dem String XMLData zuweisen. Diesen kannst du dann auf die unten besprochene Weise auselesen.

PS: Der Code oben ist ungetestet


----------



## ChuloGT (13. Oktober 2004)

Lieber Christian,

deinen ersten Beitrag noch etwas ausarbeiten, und diese Community hat einen neuen Tutorial.

Finde ich gut und bedanke mich! Hab schon die ganze Zeit danach gesucht, die Erklärung auf php.net war mir nicht sehr verständlich

Mit freundlichen Grüßen
ChuloGT


----------



## KoMtuR (13. Oktober 2004)

Wollte mich eh mal hinsetzen und ein Tutorial darüber schreiben. Wollte nur mehrere Bsp. aufzeigen. Einmal mit SimpleXML und mit der DOM 

*setzt sich gleich mal hin* Vielleicht heute Abend


----------



## low-group (13. Oktober 2004)

ansonsten gibt es ja noch magpierss


----------

