Zugriff auf XML Childnodes per PHP

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

  • Zugriff auf XML Childnodes per PHP

    Hallo,

    gibt es eine Möglichkeit per PHP auf Childnodes einer XML Datei zuzugreifen?

    Beispiel:

    PHP-Code:
    <root>
    <
    Artikel>
    <
    Artikeloption/>
    <
    Artikeloption/>
    </
    Artikel>
    </
    root
    Habe bereits einen XML Parser geschrieben aber
    der direkte Zugriff auf <childnode/> hilft mir leider auch nicht weiter, deshalb muss ich nun <child> abfragen ob es <childnodes> hat, aber finde leider nirgendwo einen Hinweis dazu.

    Funktionen aus PHP5 wie simpleXML/DOM sind leider ausgeschlossen!

    Generelles Problem ist eine Artikelauflistung die nach jedem <br> mit einem <hr/> unterteilt wird.

    IST-Zustand

    Artikel
    _____

    Artikel
    _____

    Artikeloption
    _____


    SOLL-Zustand

    Artikel
    _____

    Artikel

    Artikeloption
    _____

    Artikel



    Danke im Vorraus!
    Zuletzt geändert von hidingmyfame; 08.04.2008, 15:52.

  • #2
    Funktionen aus PHP5 wie simpleXML/DOM sind leider ausgeschlossen!
    nur php4 zur verfügung? da gibt es doch den sax-parser, damit geht das auch.

    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Original geschrieben von Kropff
      nur php4 zur verfügung?
      Leider ja. Mit SimpleXML hätte ich das schon lange erledigt aber mit PHP4 erweist sich die Sache doch äusserst schwierig.

      Gibt es keinerlei Möglichkeit via PHP auf die Childnode zuzugreifen?
      Ich hänge mal meinen bisherigen PHP Code an.

      PHP-Code:
      <?php
        
          $mblist  
      '';
          
      $flag    false;

              
      // Bestimmen der Element und Attribute die ausgelesen werden sollen        
              
      function openElement($parser$element$attributes
              {
             global 
      $flag;    
             
              if(
      $element == 'item' || $element == 'option')
              {
                  
      $flag true;
                  
                  
      $children=count($element->);  // In SimpleXML könnte ich hier ja einfach "children();" nutzen.. 
                              
                  
      if($children 0)
                  {
                      echo 
      $element;
                      echo 
      "<br />";
                  }
                  else
                  {
                      echo 
      $element;
                      echo 
      "<br />";
                      echo 
      "<hr />";
                  }
              }    
          
          }
          
            
      // Funktion zum beenden des Auslesevorgangs
          
      function closeElement($parser$element
          {
               global 
      $flag;
               
      $flag false;
          }
              
              
      // Funktion zur Ausgabe ausgelesener Elemente & Attribute
          
      function characterData($parser$data
          {
              global 
      $flag,$mblist;
              if (
      $flag)  $mblist[] = $data;
          }

          
      $parser xml_parser_create();

          
      xml_parser_set_option($parserXML_OPTION_CASE_FOLDINGfalse);
          
      xml_set_element_handler($parser"openElement""closeElement");
          
      xml_set_character_data_handler($parser"characterData");

          
      $document file_get_contents("test.xml");
          
      xml_parse($parser$document);

          
      xml_parser_free($parser);

              
      // Ausgabe der ausgelesenen Werte
             
      foreach ($mblist as $value
             {
            echo 
      $value.'<br/>';
             }
      ?>

      Kommentar


      • #4
        niemand eine Idee? Bin echt ziemlich ratlos.

        Kommentar


        • #5
          sorry, mit php4 hab ich schon seit langer zeit nichts mehr zu tun. außerdem läuft im august der support für php4 entgültig aus. da sollte nun wirklich jeder provider langsam mal auf 5 umstellen.

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Hallo Kropff,

            danke für die Antwort.

            Leider muss ich trotzdem bis zur Umstellung eine Übergangslösung finden, also falls noch jemand Ideen hat, ich bin für jeden Ratschlag offen.

            Gruß

            Kommentar

            Lädt...
            X