Eintraege von XML lesen und in Smarty ausgeben

  • PHP

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von slice.

    Eintraege von XML lesen und in Smarty ausgeben

    Hey Leute,

    braeuchte Hilfe. Ich versuche gerade ein kleines FAQ-Sysyem mit PHP zu schreiben, ohne MySQL sondern nur mit XML (wo die FAQs gespeichert sind).

    Meine XML sieht so aus:

    XML-Quellcode

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <!-- Document : faq.xml Description: Contains all of the faq entries.-->
    3. <root> <entries> <faq user="admin"> <question>What is FAQ?</question> <answer>Frequently Asked Questions and their answers. DUH.</answer> <category>General</category> <date>08/02/12</date> <time>00:08</time> </faq> <faq user="admin"> <question>How is it so simple?</question> <answer>Magic.</answer> <category>General</category> <date>08/02/12</date> <time>00:09</time> </faq> </entries></root>


    Nun, was ihc jetzt machen will ist das ich die XML lese (jeden <faq>), in eine array speichere und dann weiter an Smarty gebe welches es dann ausgibt (in einer template).

    So habe ich das jetzt aufgebaut:

    Meine index.php:

    PHP-Quellcode

    1. //Declarations$currentPage = "index.html";//Required classesrequire_once('includes/XMLMyReader.php');require_once('includes/config.inc.php');require_once('libs/Smarty.class.php');
    2. $myXMLRead = new XMLMyReader();$mainarray[] = $myXMLRead->ReadXMLFile($XMLFile);
    3. $smarty = new Smarty();$smarty->setTemplateDir('templates/');$smarty->setCompileDir('templates_c/');$smarty->setConfigDir('configs/');$smarty->setCacheDir('cache/');//For smarty assignsrequire_once("includes/smarty_assign.php");$smarty->assign('myEntries', $mainarray);
    4. $smarty->display($template . '/' . $currentPage);



    XMLMyReader:

    PHP-Quellcode

    1. <?php
    2. class XMLMyReader { public function ReadXMLFile($file) { $xml = simplexml_load_file($file); $entries = $xml->entries->faq; for ($i = 0; $i < sizeof($entries); $i++) { $author = $entries[$i]->attributes()->user; $question = $entries[$i]->question; $answer = $entries[$i]->answer; $category = $entries[$i]->category; $date = $entries[$i]->date; $time = $entries[$i]->time; $entries_array=array("author" => $author, "question" => $question, "answer" => $answer, "category" => $category, "date" => $date, "time" => $time); return $entries_array; } }
    3. }
    4. ?>



    1. Wenn ich versuche $mainarray auszugeben, kommt nur der erste Zweig raus, leider wird der rest nicht angezeigt:

    Quellcode

    1. Array( [0] => Array ( [author] => SimpleXMLElement Object ( [0] => admin )
    2. [question] => SimpleXMLElement Object ( [0] => What is FAQList? )
    3. [answer] => SimpleXMLElement Object ( [0] => A simple FAQ script written in PHP based on XML. It's small and perfect for websites who don't want a huge script for faq list. )
    4. [category] => SimpleXMLElement Object ( [0] => General )
    5. [date] => SimpleXMLElement Object ( [0] => 08/02/12 )
    6. [time] => SimpleXMLElement Object ( [0] => 00:08 )
    7. )
    8. )


    Und dann will ich das ganze in der Template ausgeben, mit dem Array_Key auch noch dazu, wie koennte ich das ganze anstellen damit es funktioniert?

    Es waere sehr nett wenn mir jemand helfen koennte. (Sorry wegen mein Deutsch, lebe seit 2 Jahren in den USA ^^ )

    -Danke!
    Epic