Probleme beim auslesen der XML-Datei
Hallo Leute benötige mal euer Fachwissen.
Ich habe eine XML-Datei die ich auslesen möchte
- <menu>
<menu name="Homes" folder="home" introtext="Text zu bild 1" />
<menu name="Innengestaltung" folder="innengestaltung" introtext=" Text zu bild 2" />
<menu name="Fassadengestaltung" folder="fassadengestaltung" introtext=" Text zu bild 3" />
</menu>
Die Daten name und folder bekomme ich wunderbar nur die vom introtext nicht.
Habe nun schon zwei Tage darum brobiert und versucht über google nähere
informationen zu bekommen es will aber einfach nicht funktionieren.
Hier habe ich mal den Code bereit gestellt.
Meine Frage wo liegt mein Denk- bzw. Schreibfehler?
Ich hoffe das mir jemand weiter helfen kann und bedanke mich schon mal im voraus für eure Mühe.
Hallo Leute benötige mal euer Fachwissen.
Ich habe eine XML-Datei die ich auslesen möchte
- <menu>
<menu name="Homes" folder="home" introtext="Text zu bild 1" />
<menu name="Innengestaltung" folder="innengestaltung" introtext=" Text zu bild 2" />
<menu name="Fassadengestaltung" folder="fassadengestaltung" introtext=" Text zu bild 3" />
</menu>
Die Daten name und folder bekomme ich wunderbar nur die vom introtext nicht.
Habe nun schon zwei Tage darum brobiert und versucht über google nähere
informationen zu bekommen es will aber einfach nicht funktionieren.
Hier habe ich mal den Code bereit gestellt.
PHP-Code:
<?php
class xmlParser{
var $xml_obj = null;
var $output = array();
function xmlParser(){
$this->xml_obj = xml_parser_create();
xml_set_object($this->xml_obj,$this);
xml_set_character_data_handler($this->xml_obj, 'dataHandler');
xml_set_element_handler($this->xml_obj, "startHandler", "endHandler");
}
function parse($path){
if (!($fp = fopen($path, "r"))) {
die("Cannot open XML data file: $path");
return false;
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($this->xml_obj, $data, feof($fp))) {
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->xml_obj)),
xml_get_current_line_number($this->xml_obj)));
xml_parser_free($this->xml_obj);
}
}
return true;
}
function startHandler($parser, $name, $attribs){
$_content = array('name' => $name);
if(!empty($attribs))
$_content['attrs'] = $attribs;
array_push($this->output, $_content);
}
function dataHandler($parser, $data){
if(!empty($data)) {
$_output_idx = count($this->output) - 1;
$this->output[$_output_idx]['content'] = $data;
}
}
function endHandler($parser, $name){
if(count($this->output) > 1) {
$_data = array_pop($this->output);
$_output_idx = count($this->output) - 1;
$this->output[$_output_idx]['child'][] = $_data;
}
}
}
$list = "gallery";
$p =& new xmlParser();
$p->parse('menu.xml');
$galleries = isset($p->output[0]['child']) ? $p->output[0]['child'] : array();
?>
<h1>Galleries</h1>
<hr />
<form name="form_new" action="gallerie.php" method="post">
<input type="hidden" name="new_name" value="">
<a href="javascript:new_gallery()">Neue Gallery anlegen</a>
</form>
<form name="form_save" action="sichern.php" method="post" onsubmit="return save_gal('gallery_list');">
<input type="hidden" name="gal_names" value="">
<input type="hidden" name="gal_folders" value="">
<input type="hidden" name="gal_deletes" value="">
<input type="hidden" name="gal_introtexts" value="">
<ul id="gallery_list" class="sortable boxy">
<?php print_galleries($galleries); ?>
</ul>
<p><input type="submit" value="Änderungen sicher"/></p>
</form>
<script language="JavaScript"><!--
<?php print_folders($galleries); ?>
//-->
</script>
<?php
// Hauptausgabe
function print_galleries($gals){
$gals_html = "";
$count = 0;
$template = '<li id="gal_%NUM%">
<div class="handle"></div>
<div class="text" id="gal_info">
<input name="name_%NUM%" type="text" value="%NAME%" class="input_gal" />
<span class="delete"><input type="checkbox" name="delete_%NUM%">löschen</span>
<span class="pic_edit"><input type="button" value="Bilder bearbeiten" onclick="location.href=\'bild.php?name=%NAME%&folder=%FOLDER%\';"/></span>
<input type="button" value="Bilder einfügen" onclick="showUpload(\'%NAME%\',\'%FOLDER%\'); return false;"/>
<p><input name="introtext_%NUM%" type="text" value="%INTROTEXT%" class="input_gal2" /> Introtext</p>
</div>
</li>';
$gal_vars = array("%NUM%", "%NAME%", "%FOLDER%", "%INTROTEXT%");
foreach ($gals as $gal){
$gal_values = array($count+1, $gals[$count]['attrs']['NAME'], $gals[$count]['attrs']['FOLDER'], $gals[$count]['attrs']['INTROTEXT']);
$gals_html .= str_replace($gal_vars, $gal_values, $template);
++$count;
}
echo $gals_html;
}
function print_folders($gals){
$count = 1;
foreach ($gals as $gal){
echo("var folder_$count = \"" . $gals[$count-1]['attrs']['FOLDER'] . "\";\r\n");
echo("var introtext_$count = \"" . $gals[$count-1]['attrs']['INTROTEXT'] . "\";\r\n");
++$count;
}
}
?>
Ich hoffe das mir jemand weiter helfen kann und bedanke mich schon mal im voraus für eure Mühe.
Kommentar