XML als Content-Datei! Nicht PARSEN!!!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • XML als Content-Datei! Nicht PARSEN!!!

    hallo,

    also ich bin am verzweifeln! ich hab inzwischen den ganzen PHP-XML thread hier durchgelesen, aber nichts gescheites gefunden! auch google hat mir nicht viel weiter geholfen.

    die meisten leute die hier gepostet haben möchten eine XML datei mit PHP auslesen und dann aber auch gleich in XML parsen, so wie ich das verstanden habe.

    ich möchte aber eine XML datei einfach als datenspeicher verwenden (wie eine kleine datenbank), diese mit PHP auslesen und dann GANZ NORMAL in HTML ausgeben!

    XML beispiel:

    PHP-Code:
    <articles>
      <
    article>
        <
    title>PHP und XML</title>
        <
    author>Hans Mustermann</author>
        <
    description>blablabla</description>
      </
    article>
      <
    article>
        <
    title>Java und XML</title>
        <
    author>Peter Zitrone</author>
        <
    description>blablabla</description>
      </
    article>
    </
    articles
    diese datei muss man doch einfach auslesen können wie eine datenbank auch, oder?
    so das ich dann in einer schleife jeden "block" durchgehe und es mittles PHP (zB über ein templatesystem) ausgebe. ganz normales parsen...! PHP DOM nennt sich das wohl, wie ich inzwischen rausgefunden habe...


    bei google hab ich zwar hilfen gefunden, wie das ungefähr geht, aber die benutzen alle XSLT zur formatierung! genau DAS ist der punkt, den ich nicht brauche. (zB hier: http://www.infos24.de/xmle/handbuch/6_xml_sablotron.htm )


    und dieser link kommt auch ganz nah an meine wünsche ran, bloß das ich GENAU so ein beispiel für PHP bräuchte (statt ASP: http://www.aspheute.com/artikel/20000417.htm )


    die "referenz" bei php.net hat mir auch nicht weiter geholfen! (wo sind da die php funktionen, die ich brauche?!)


    vielleicht kennt einer von euch ein kleinen php-code-schnipsel? tutorial? weiterführende information?

    danke!




    PS: ist die verbindung zwischen XML und PHP noch in einem so extremen anfangsstadium, das es da so wenig infos drüber gibt?
    andere programmiersprachen wie Java oder ActionScript bieten diese verbindung doch schon ziemlich ausgereift und umfangreich an?!
    GLORIA PERPETUA

  • #2
    also ich nutze unter linux EXPAT (open source xml-parser), den kannst du auch per php ansteuern, und ist auf den meisten webservern verfügbar.

    expat.sourceforge.net/

    damit kannst du sehr einfach die tags und den inhalt auslesen und dann entsprechend mit html ausgeben

    gruss
    peter
    Zuletzt geändert von Kropff; 11.07.2003, 13:14.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      aja, danke!
      von dem ding hab ich bei google auch schon irgendwo was gelesen.

      gibt es einen "standard" was diese xml-parser betrifft? weil wenn ich damit anfange, dann sollte das auch "genereller standard" sein!


      noch eine kleine frage: ist ein solcher xml-parser standardmäßig in dem php-paket dabei?
      also wenn ich die scripte zu meinem provider hochlade, funktionieren die dort?
      weil bei einem provider kann ja nicht einfach eine extension nachinstallieren (wenn man nicht gerade einen kompletten v-server hat o.ä.)

      thx soweit
      GLORIA PERPETUA

      Kommentar


      • #4
        kannst du mit phpinfo() abfragen, wenn expat auf der kiste drauf ist, sieht das so aus wie auf dem angehängten bild

        gruss
        peter
        Angehängte Dateien
        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
        Meine Seite

        Kommentar


        • #5
          Sablotron erhälst Du hier:
          http://www.gingerall.com/charlie/ga/xml/p_sab.xml

          Ein Tut:
          http://www.zend.com/zend/tut/tut-hudson.php
          http://www.gingerall.com/charlie/ga/xml/x_sabphp.xml
          cu

          Blaster
          Zuletzt geändert von Blaster; 11.07.2003, 14:52.
          Yuppi, endlich Elite ...

          Kommentar


          • #6
            ja, sorry, das hab ich auch gerade entdeckt!
            es ist sogar der expat als standard!!! *freu*


            hab ein tutorial er-googled, für alle die eins suchen (wird ja ständig hier gepostet!)
            http://www.zend.com/zend/art/parsing.php


            und noch eine frage: folgenden code habe ich gefunden... er verwundert mich aber sehr, denn:

            PHP-Code:
            function GetElementByName ($xml$start$end) {
              
            $startpos strpos($xml$start);
              if (
            $startpos === false) {
                return 
            false;
              }
              
            $endpos strpos($xml$end);
              
            $endpos $endpos+strlen($end); 
              
            $endpos $endpos-$startpos;
              
            $endpos $endpos strlen($end);
              
            $tag substr ($xml$startpos$endpos);
              
            $tag substr ($tagstrlen($start));
              return 
            $tag;

            diese funktion stammt aus einem script, welches den inhalt einer XML datei ausliest und zerlegt.
            ABER: warum schreibt der programmierer hierfür extra eine funktion???
            ist dieses, was die funktion tut, nicht GENAU DAS(!!!), was eigentlich der parser tun sollte??? ich mein, mit substr() zu arbeiten mit 1000 zählern usw... das kann doch nicht sinn und zweck der sache sein?! das ist doch langsam und rechenaufwendig! *wunder*

            hat einer von euch eine erklärung?
            was hat der parser mit dieser funktion zu tun?
            Zuletzt geändert von deklarmart; 11.07.2003, 14:53.
            GLORIA PERPETUA

            Kommentar


            • #7
              Re: XML als Content-Datei! Nicht PARSEN!!!

              Original geschrieben von Blaster
              [...]
              Ein Tut:
              http://www.zend.com/zend/tut/tut-hudson.php
              [...]
              Original geschrieben von deklarmart
              bei google hab ich zwar hilfen gefunden, wie das ungefähr geht, aber die benutzen alle XSLT zur formatierung! genau DAS ist der punkt, den ich nicht brauche. (zB hier: http://www.infos24.de/xmle/handbuch/6_xml_sablotron.htm )

              ^^

              aber trotzdem danke!
              GLORIA PERPETUA

              Kommentar


              • #8
                ABER: warum schreibt der programmierer hierfür extra eine funktion???
                eigentlich sind es DREI funktionen (so kenne ich das zumindest), die erste für den start-tag, die zweite für den inhalt, und die dritte für das schließende tag.

                PHP-Code:
                function startElement($parser,$name,$attrs)
                {
                     echo 
                $name;
                }

                function 
                getData$parser$data)
                {
                   echo 
                $data;
                }

                function 
                endElement($parser$name)
                {
                      echo 
                $name;

                und der aufruf erfolgt so:
                PHP-Code:
                $xml_parser xml_parser_create;
                // Parst start -und end-tag
                xml_set_element_handler ($xml_parser"startElement""endElement");
                // parst den inhalt
                xml_set_charakter_data_handler($xml_parser"getData");
                //name des docs zum parsen
                xml_parse ($xml_parser,"dokument.xml");
                xml_parser_free ($xml_parser); 
                ist nur ein kleines beispiel, und wohl auch voller fehler (hab ich aus dem kopf heraus gehackt), die erläuterungen sind auch nicht so ganz korrekt, aber es soll ja nur zeigen, wie das prinzipiell funzt.
                gruss
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  ahhhhh! super, jetzt hats bei mir immerhin zu 50% *klick* gemacht.

                  bleibt noch die frage offen: wenn du das so gut ausm kopf tippen kannst, wo hast du das dann gelernt??
                  du must es ja irgendwo gelesen haben. vielleicht eine gute seite die du noch kennst? :->

                  aber vielleicht bringt mich das so auch schonmal weiter.
                  (leider sind diese ganzen xml funktionen bei php.net nicht so schön erklärt, wie alle anderen php-funktionen (mail() usw...)


                  GLORIA PERPETUA

                  Kommentar


                  • #10
                    ALLES SUPER!!!

                    - dein code funktioniert 100pro
                    - ich hab die funktionsweise endlich gepeilt
                    - das auslesen von xml dateien funktioniert prima





                    VIELEN DANK @ ALLE
                    GLORIA PERPETUA

                    Kommentar


                    • #11
                      könnt ihr mir nochmal ein kleinen tip geben?
                      eigentlich hatte ich noch nie probleme mit dem auslesen von mehrdimensionalen arrays, aber hier scheint das etwas anders zu sein!

                      liegt das evt. daran, das ein objekt einer eigenen klasse im array liegt?

                      die xml-datei:
                      PHP-Code:
                      <?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
                      <briefbogen>
                      <brief>
                        <name>All User by BlaBla AG</name>
                        <betreff format="big">XML Vortrag</betreff>
                        <absatz>XML ist echt toll!!!</absatz>
                        <unterschrift>Mr. AllUser</unterschrift>
                      </brief>
                      <brief>
                        <name>Semmelberg GmbH</name>
                        <betreff format="big">Ihr Angebot</betreff>
                        <absatz>Wolln wa nich</absatz>
                        <unterschrift>Mustermann</unterschrift>
                      </brief>
                      </briefbogen>
                      die php-klasse:
                      PHP-Code:
                      class xmlData {
                          var 
                      $name;
                          var 
                      $betreff;
                          var 
                      $absatz;
                          var 
                      $unterschrift;

                          function 
                      xmlData ($aa) {
                              foreach (
                      $aa as $k=>$v)
                                  
                      $this->$k $aa[$k];
                          }

                      die ausgabe des arrays mit print_r() :

                      PHP-Code:
                      Array
                      (
                          [
                      0] => xmldata Object
                              
                      (
                                  [
                      name] => All User by BlaBla AG
                                  
                      [betreff] => XML Vortrag
                                  
                      [absatz] => XML ist echt toll!!!
                                  [
                      unterschrift] => MrAllUser
                              
                      )

                          [
                      1] => xmldata Object
                              
                      (
                                  [
                      name] => Semmelberg GmbH
                                  
                      [betreff] => Ihr Angebot
                                  
                      [absatz] => Wolln wa nich
                                  
                      [unterschrift] => Mustermann
                              
                      )

                      das array was am schluss entsteht mit den kompletten baumstruktur heißt "$db"!
                      und so habe ich es schon versucht auszugeben:
                      PHP-Code:
                      echo $db[0][0];
                      echo 
                      $db[0][name];
                      echo 
                      $db[0][$xmlData[0]];
                      echo 
                      $db[0][$xmlData['name']];
                      echo 
                      $db[0][$xmlData->name];
                      ...
                      usw 
                      aber es geht nicht!
                      GLORIA PERPETUA

                      Kommentar


                      • #12
                        *autsch*


                        es geht natürlich ganz leicht, wenn man sich eine methode get_xmlData() für die klasse schreibt! ^^


                        sorry, das nächste mal überlege ich vor dem posten!
                        GLORIA PERPETUA

                        Kommentar

                        Lädt...
                        X