Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 24-05-2005, 14:33
BarbapapaX
BarbapapaX is offline
Ik heb een vraagje over xml . Ik heb het volgende voorbeeld van Wikipedia:
Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<playlist name="mylist">
 <song>
  <title>Little Fluffy Clouds</title>
  <artist>the Orb</artist>
 </song>
 <song>
  <title>Goodbye mother Earth</title>
  <artist>Underworld</artist>
 </song>
</playlist>
Mn vraag is nu hoe ik dit met php zou kunnen ontleden en dan zou kunnen gebruiken op een pagina.Klinkt allemaal een beetje vaag , maar ik hoop dat iemand me kan helpen.
Met citaat reageren
Advertentie
Oud 24-05-2005, 14:45
Verwijderd
load.xml.php
PHP-code:
<?php 
  
// indien lager dan php 5, dit uncommenten
  //  function file_get_contents($file) {
  //       $file = file($file);
  //      return !$file ? false : implode('', $file);
  //  }

class xml
   
//variabelen
    
   // om de output in te onthouden
   
var $out ""
   var 
$temp = array(); 

   
//om de huidige plaats te kennen
   
var $inside false
   var 
$huidige_tag ""
   var 
$huidige_atr ""
    
   
//ingegeven door de gebruiker
   
var $hoofdag ""
   var 
$layout ""
   var 
$vervang ""
   var 
$tags ""
       

      
          
   
######
    #deze functie parsed een bestand
    ######
   
function parse($bestand$layout$vervang$tags$hoofdtag){ 
      
//alle andere buiten bestand en layout in de class schrijven
      
$this->hoofdtag $hoofdtag
      
$this->layout $layout
      
$this->vervang $vervang
      
$this->tags $tags
    
      
//parser maken en hem in deze class laten werken
      
$xml_parser xml_parser_create(); 
      
xml_set_object($xml_parser, &$this); 
       
      
//functies om alles juist te laten weergeven
      
xml_set_element_handler($xml_parser"begin""einde"); 
      
xml_set_character_data_handler($xml_parser"data");  
       
      
//het bestand parsen:
      
$op file_get_contents($bestand) or die("Het bestand kon niet gevonden worden");       
      
$ret xml_parse($xml_parser$op) or die($this->fout($bestand$xml_parser)); 
       
      
//alles legen
      
xml_parser_free($xml_parser); 
       
      return 
$this->out
   } 
    
   
######
    #deze functie geeft het begin van een element en de atributen weer
    ######    
   
function begin($parser$tag$attributen){ 
      if(
strtolower($tag) == strtolower($this->hoofdtag)){ 
         
$this->inside true
         
//array aanmaken:
         
$this->maak_array(); 
      } else { 
         
$this->huidige_tag strtolower($tag); 
      } 
       
      
//zien of er attributen moeten toegevoeg worden:
         
reset($this->temp); 
         foreach(
$this->temp as $key => $waarde){ 
            
//veld_attr_attribuutwaarde
            
foreach($attributen as $key2 => $waarde2){ 
               
$poging strtolower($tag)."_attr_".strtolower($key2); 
               if(
$key == $poging){ 
                  
$this->temp[$poging] = $waarde2
               } 
                
               
//de eerste word raar genoeg niet meegenomen dus resetten we het gewoon
               
if(!isset($eerste)){ 
                  
reset($attributen); 
                  
$eerste true
               } 
            } 
            
reset($attributen);    
         } 
         
reset($this->temp); 
         unset(
$eerste); 
       
          
   } 
    
   
######
    #deze functie verwerkt de data die tussen begin en eindtag staan
    ######    
   
function data($parser$data){ 
      if(
$this->temp[$this->huidige_tag] == ""){ 
         
$this->temp[$this->huidige_tag] = $data
      } 
   } 
       
   
######
    #deze functie geeft het einde van een functie (soort van output gebeurt hier ook)
    ######    
   
function einde($parser$tag){ 
      if(
strtolower($tag) == strtolower($this->hoofdtag)){ 
         
$this->inside false
         
$this->layout(); 
      } 
      
$this->huidige_tag "";    
   } 

   
######
    #geeft de errors weer
    ######
   
function fout($bestand$xml_parser){ 
      
$out 'lijn: '.xml_get_current_line_number($xml_parser).'<br>
      string: '
.xml_error_string($xml_parser).'<br>
      code: '
.xml_get_error_code($xml_parser).'<br>
      bestand: '
.$bestand.'<br>'
      return 
$out
   } 
    
   
########
   #maakt de temporary array aan met als oproep de tagnaam
   ########
   
function maak_array(){ 
      
//leegmaken:
      
unset($this->temp); 
      
$this->temp = array(); 
       
      
//vullen
      
$tags $this->tags
      if(
is_array($tags)){ 
         foreach(
$tags as $nummer => $tagnaam){ 
            
$this->temp[$tagnaam] = ""
         } 
         
reset($tags); 
      } 
   } 
    
   
#######
   #plaats alles mooi in de layout
   #######
   
function layout(){ 
      
$layout $this->layout
      
$temp $this->temp
       
      foreach(
$this->tags as $nummer => $tagnaam){ 
         if(
count($this->vervang) == count($this->tags)){ 
            
$layout str_replace($this->vervang[$nummer], $temp[$tagnaam], $layout); 
         } else { 
            die(
"U hebt niet evenveel vervangingen als tagnamen opgegeven!"); 
         } 
      } 
      
reset($this->tags);    
       
      
//out neerschrijven
      
$this->out .= $layout
   } 
}
en dit op je pagina zetten waar je m wilt hebben (vergeet de load.xml.php niet te includen)
PHP-code:
// xml script om menu in te laden.. $taal bepaald welke XML file.. 
  
$xml = new xml;
  
$layout '<li><a href=::::||burl||::::>::::||bname||::::</a>%smenu::::||nummer||::::%</li>'// menu op een rijtje zetten
  
$layout ''.$layout.''// even netjes in een ul zetten

  
  
$vervang = array("::::||nummer||::::","::::||bname||::::""::::||burl||::::"); // variabelen omzetten
  
$tags = array("bname_attr_nummer""bname""burl");  // kijken welke vars nodig zijn
  
$parse $xml->parse("inc/xml/menu_".$taal.".xml"$layout$vervang$tags"item");  // importeren, vervangen en printen 
en natuurlijk aanpassen naar je eigen wensen

het is niet mijn script, ik heb t ook ergens vandaan..
en k doe dus niet aan feedback of wijzigingen
Met citaat reageren
Oud 24-05-2005, 18:36
BarbapapaX
BarbapapaX is offline
beetje onduidelijk zo
Met citaat reageren
Oud 24-05-2005, 20:23
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
Citaat:
BarbapapaX schreef op 24-05-2005 @ 19:36 :
beetje onduidelijk zo
Hoeveel duidelijker had je het gehad willen hebben? Moet iemand meteen maar even je gedachten lezen en voor je schrijven wat je nodig hebt? Je mag er zelf ook best wat moeite voor doen, SE heeft al wat behoorlijk nuttige code gegeven.
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 25-05-2005, 10:43
Verwijderd
Citaat:
Manuzhai schreef op 24-05-2005 @ 21:23 :
Hoeveel duidelijker had je het gehad willen hebben? Moet iemand meteen maar even je gedachten lezen en voor je schrijven wat je nodig hebt? Je mag er zelf ook best wat moeite voor doen, SE heeft al wat behoorlijk nuttige code gegeven.
T is dak op m'n werk zit en niet veel tijd hier aan kan besteden, anders had ik het denkik wel gedaan..
Met citaat reageren
Oud 25-05-2005, 10:54
Verwijderd
Citaat:
SE schreef op 25-05-2005 @ 11:43 :
T is dak op m'n werk zit en niet veel tijd hier aan kan besteden, anders had ik het denkik wel gedaan..
Nuttigste reply _ooit_
Met citaat reageren
Oud 25-05-2005, 12:18
BarbapapaX
BarbapapaX is offline
Citaat:
Manuzhai schreef op 24-05-2005 @ 21:23 :
Hoeveel duidelijker had je het gehad willen hebben? Moet iemand meteen maar even je gedachten lezen en voor je schrijven wat je nodig hebt? Je mag er zelf ook best wat moeite voor doen, SE heeft al wat behoorlijk nuttige code gegeven.
Wrom denk je dat ik het hier vraag? Omdat ik al zoveel moeite heb gedaan om op het internet hier wat over te vinden.

En in mn vraag gaat het duidelijk over het voorbeeld wat wordt gegeven. Mssn is dit easy voor jouw , maar voor mij wie pas begonnen is met dit soort dingen niet. Maarja een vriendelijke reactie van jouw had ik op dit forum ook niet moeten verw8en.

En... . Hij zegt zelf dat ie het wat duidelijker had kunnen geven
Citaat:
T is dak op m'n werk zit en niet veel tijd hier aan kan besteden, anders had ik het denkik wel gedaan..

Laatst gewijzigd op 25-05-2005 om 12:20.
Met citaat reageren
Oud 25-05-2005, 12:21
BarbapapaX
BarbapapaX is offline
Citaat:
SE schreef op 25-05-2005 @ 11:43 :
T is dak op m'n werk zit en niet veel tijd hier aan kan besteden, anders had ik het denkik wel gedaan..
Iig bedankt voor de moeite
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 11:40.