F
freakx0
Guest
Ich möchte gerade erste Schritte im XML parsen mit php machen jedoch hängt es schon an der Idee
Bisher hab ich nur news (welche ja recht einheitliches Format haben) mit einer open-source Klasse geparst, jetzt will ich das aber selber mal lernen.
Wie kann ich die nachfolgende XML-Datei parsen? Ich würde das ganze am besten in ein mehrdimensionales Array packen, nur wie?
CODE
<?xml version="1.0" encoding="ISO-8859-1"?>
<spezialxml >
<uebertragung/>
<anbieter>
<nr>100179</nr>
<name>Firma Record GmbH</bane>
<spezialxml_id>22112</spezialxml_anid>
<anhang>
<anhangtitel></anhangtitel>
<format></format>
<daten>
<pfad></pfad>
</daten>
</anhang>
<artist>
<kategorie>
<nutzungsart HOEREN="1"/>
<vermarktungsart KAUF="true"/>
<art>
<genre genretyp="hiphop"/>
</art>
</kategorie>
<kontakt>
<plz>13351</plz>
<ort>Berlin</ort>
<strasse>Müllerstr.</strasse>
<hausnummer>97</hausnummer>
<bundesland></bundesland>
</kontakt>
<kontaktperson>
<email_zentrale>info@name.de</email_zentrale>
<email_direkt>nachname@name.de</email_direkt>
<tel_zentrale>030/123456</tel_zentrale>
<tel_durchw></tel_durchw>
<tel_fax>030/123457</tel_fax>
<tel_handy></tel_handy>
<name>nachname</name>
</kontaktperson>
<infos>
<alter>250</alter>
<ehe></ehe>
</infos>
<ausstattung>
<ons></ons>
<raeume></raeume>
</ausstattung>
<anhaenge>
<anhang>
<anhangtitel>cd_124.jpg</anhangtitel>
<format>JPG</format>
<daten>
<anhanginhalt>ascmabamn23abnsdam==</anhanginhalt>
</daten>
</anhang>
<anhang>
<anhangtitel></anhangtitel>
<format></format>
<daten>
<pfad></pfad> </daten>
</anhang>
</anhaenge>
</artist>
</anbieter>
</spezialxml>
php-manual gibt ja schon eine Einführung, nur so viel weiter komme ich nicht, da meine XML-Datei ja so verschachtelt ist...
CODE
<?php
$file = "data.xml";
$depth = array();
function startElement($parser, $name, $attrs)
{
global $depth;
for ($i = 0; $i < $depth[$parser]; $i++) {
echo " ";
}
echo "$name\n";
$depth[$parser]++;
}
function endElement($parser, $name)
{
global $depth;
$depth[$parser]--;
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?>
Kann mir jemand einen Tipp geben, wie ich da anfangen könnte?
Die Funktion/Methode startElement wird ja bei jedem öffnenden <anhaenge> aufgerufen, soweit so klar, nur wie mache ich das mit dem übelst verschachtelten zeugs??
Gruß
Dominik
Bisher hab ich nur news (welche ja recht einheitliches Format haben) mit einer open-source Klasse geparst, jetzt will ich das aber selber mal lernen.
Wie kann ich die nachfolgende XML-Datei parsen? Ich würde das ganze am besten in ein mehrdimensionales Array packen, nur wie?
CODE
<?xml version="1.0" encoding="ISO-8859-1"?>
<spezialxml >
<uebertragung/>
<anbieter>
<nr>100179</nr>
<name>Firma Record GmbH</bane>
<spezialxml_id>22112</spezialxml_anid>
<anhang>
<anhangtitel></anhangtitel>
<format></format>
<daten>
<pfad></pfad>
</daten>
</anhang>
<artist>
<kategorie>
<nutzungsart HOEREN="1"/>
<vermarktungsart KAUF="true"/>
<art>
<genre genretyp="hiphop"/>
</art>
</kategorie>
<kontakt>
<plz>13351</plz>
<ort>Berlin</ort>
<strasse>Müllerstr.</strasse>
<hausnummer>97</hausnummer>
<bundesland></bundesland>
</kontakt>
<kontaktperson>
<email_zentrale>info@name.de</email_zentrale>
<email_direkt>nachname@name.de</email_direkt>
<tel_zentrale>030/123456</tel_zentrale>
<tel_durchw></tel_durchw>
<tel_fax>030/123457</tel_fax>
<tel_handy></tel_handy>
<name>nachname</name>
</kontaktperson>
<infos>
<alter>250</alter>
<ehe></ehe>
</infos>
<ausstattung>
<ons></ons>
<raeume></raeume>
</ausstattung>
<anhaenge>
<anhang>
<anhangtitel>cd_124.jpg</anhangtitel>
<format>JPG</format>
<daten>
<anhanginhalt>ascmabamn23abnsdam==</anhanginhalt>
</daten>
</anhang>
<anhang>
<anhangtitel></anhangtitel>
<format></format>
<daten>
<pfad></pfad> </daten>
</anhang>
</anhaenge>
</artist>
</anbieter>
</spezialxml>
php-manual gibt ja schon eine Einführung, nur so viel weiter komme ich nicht, da meine XML-Datei ja so verschachtelt ist...
CODE
<?php
$file = "data.xml";
$depth = array();
function startElement($parser, $name, $attrs)
{
global $depth;
for ($i = 0; $i < $depth[$parser]; $i++) {
echo " ";
}
echo "$name\n";
$depth[$parser]++;
}
function endElement($parser, $name)
{
global $depth;
$depth[$parser]--;
}
$xml_parser = xml_parser_create();
xml_set_element_handler($xml_parser, "startElement", "endElement");
if (!($fp = fopen($file, "r"))) {
die("could not open XML input");
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
xml_parser_free($xml_parser);
?>
Kann mir jemand einen Tipp geben, wie ich da anfangen könnte?
Die Funktion/Methode startElement wird ja bei jedem öffnenden <anhaenge> aufgerufen, soweit so klar, nur wie mache ich das mit dem übelst verschachtelten zeugs??
Gruß
Dominik