Guten Abend!
Ich versuche gerade, eine xml-Datei mit PHP zu parsen... das klappt insofern schonmal, dass er die Datei durchgeht und überprüft, ob ein Element geöffnet oder geschlossen wird und er erkennt auch, ob Fließtext drin steht.
Allerdings möchte ich nun je nachdem, in welchem Element er sich befindet, den Fließtext einer anderen Variable zuweisen. Das ganze sollte dann als globale Variable laufen, was eigentlich auch funktioniert. Schöner wäre es, wenn es anders ginge, aber mir fällt nichts ein (was nicht heißt, dass es nichts gibt).
Die xml-Datei sieht so aus: https://www.stexmedia.com/pads/poker.xml
Wenn ich nur eine Bedinung hinmache und sage, er soll, wenn $e_name == "program_name" ist, der Variable $ausgabe den Fließtext zuweisen, funktioniert das super. Nur, wenn ich das alles abarbeiten möchte, geht es nicht.
Als bisherigen Code hatte ich das hier:
Ist sicher wieder ein Dummheitsfehler, ist aber auch das erste mal, dass ich mit xml in PHP arbeite.
Schönen Abend noch!
Gruß,
Stex
edit: Ach so, bei mir auf der Server läuft wohl noch php4, daher kein simplexml -.-
Ich versuche gerade, eine xml-Datei mit PHP zu parsen... das klappt insofern schonmal, dass er die Datei durchgeht und überprüft, ob ein Element geöffnet oder geschlossen wird und er erkennt auch, ob Fließtext drin steht.
Allerdings möchte ich nun je nachdem, in welchem Element er sich befindet, den Fließtext einer anderen Variable zuweisen. Das ganze sollte dann als globale Variable laufen, was eigentlich auch funktioniert. Schöner wäre es, wenn es anders ginge, aber mir fällt nichts ein (was nicht heißt, dass es nichts gibt).
Die xml-Datei sieht so aus: https://www.stexmedia.com/pads/poker.xml
Wenn ich nur eine Bedinung hinmache und sage, er soll, wenn $e_name == "program_name" ist, der Variable $ausgabe den Fließtext zuweisen, funktioniert das super. Nur, wenn ich das alles abarbeiten möchte, geht es nicht.
Als bisherigen Code hatte ich das hier:
PHP:
<?php
function startElement($parser, $element_name, $element_attribute) {
global $ausgabe, $e_name;
//Umwandeln in Kleinbuchstaben
$element_name = strtolower($element_name);
//Überprüfung des Elementnames
$e_name = $element_name;
}
function endElement($parser, $element_name) {
global $ausgabe, $e_name;
// in Kleinbuchstaben umwandeln
$element_name = strtolower($element_name);
// Überprüfung des Names eines Elementes
}
function cdata($parser, $element_inhalt) {
global $ausgabe, $e_name, $p_name, $p_website, $p_version, $p_type, $p_updatetype, $p_jahr, $p_monat, $p_tag, $p_lastchange, $p_os, $p_install, $p_filesize, $p_description, $p_desclong, $p_screenshot, $p_infosite, $p_xmlfile;
// Der normale Text wird an $ausgabe angehängt
if ($e_name == "program_name") {
$p_name = $element_inhalt;
}
if ($e_name == "company_website_url") {
$p_website = $element_inhalt;
}
if ($e_name == "program_version") {
$p_version = $element_inhalt;
}
if ($e_name == "program_type") {
$p_type = $element_inhalt;
}
if ($e_name == "program_release_status") {
$p_updatetype = $element_inhalt;
}
if ($e_name == "program_release_year") {
$p_jahr = $element_inhalt;
}
if ($e_name == "program_release_month") {
$p_monat = $element_inhalt;
}
if ($e_name == "program_release_day") {
$p_tag = $element_inhalt;
}
if ($e_name == "program_change_info") {
$p_website = $element_inhalt;
}
if ($e_name == "program_os_support") {
$p_os = $element_inhalt;
}
if ($e_name == "program_install_support") {
$p_website = $element_inhalt;
}
if ($e_name == "file_size_mb") {
$p_website = $element_inhalt;
}
if ($e_name == "char_desc_80") {
$p_description = $element_inhalt;
}
if ($e_name == "char_desc_2000") {
$p_desclong = $element_inhalt;
}
if ($e_name == "application_screenshot_url") {
$p_screenshot = $element_inhalt;
}
if ($e_name == "application_info_url") {
$p_infosite = $element_inhalt;
}
if ($e_name == "application_xml_file_url") {
$p_xmlfile = $element_inhalt;
}
}
$xmlFile = file("./pads/poker.xml");
$parser = xml_parser_create();
xml_set_element_handler($parser, "startElement", "endElement");
xml_set_character_data_handler($parser, "cdata");
foreach($xmlFile as $elem)
{
xml_parse($parser, $elem);
}
xml_parser_free($parser);
echo "name des Programms: ".$p_name;
?>
Schönen Abend noch!
Gruß,
Stex
edit: Ach so, bei mir auf der Server läuft wohl noch php4, daher kein simplexml -.-
Zuletzt bearbeitet: