XML: reflectieverslag

januari 31, 2007

Reflectieverslag: XML

Na een aantal weken hard te hebben gewerkt aan de xml eindopdracht die ik samen met cleon en allan heb gemaakt heb ik toch veel geleerd. In het begin vond ik xml als taal zelf helemaal niet zo boeiend, maar wat je ermee kan is iets wat ik nog niet wist en juist veel boeiender.

Dankzij het ‘blauwe’ boekje werd ons ook duidelijk waar xml nog meer geschikt voor is, je kan er informatie mee ophalen vanuit diverse bronnen en het op een bepaalde wijze ordenen. Je kan er data in opslaan en ook het laten beschrijven wat voor data het vasthoudt.

Voor de eindopdracht hadden wij gekozen om informatie uit rss feeds op te halen via sites en deze te plaatsen in een bepaalde format op de thuissite, de zogeheten ‘content mashup’. Dit gebeurde geheel via php, maar doordat ik nog geringe kennis had over DOM en XSLT deed ik het ook alleen maar via php. In de oude situatie deed ik dit:

RSS feeds –> PHP –> Echo –> Html

Gelukkig kwam fons met het advies hoe je gebruik kon maken van het DOM (document object modeling) en XSLT kon hanteren, want de eerste versie die ik had geprogrammeerd was geheel gebaseerd op php en spuugde ook alleen maar html uit.

In de versie die we toen gingen maken was het de bedoeling dat je met php de waardes van de rss feeds kon inlezen , en deze vervolgens ging uitspugen in XML en ging combineren met een XSLT bestand voor een mooiere opmaak.

RSS Feeds –> PHP –> XML –> XSLT –> Pagina

Uiteindelijk is dit gelukt op geheel eigen wijze om ruwe xml met data uit de rss feeds te halen en deze vervolgens op te slaan als xml bestand. Om het automatisch te combineren met XSLT is mij helaas niet gelukt, ik heb wel geleerd dat je hiervoor een bepaalde klasse binnen PHP moet gebruiken om het xslt bestand te koppelen aan xml. PHP maakt gebruik van de zogeheten XSLTProcessor() klasse, mijn php engine werkte hier niet mee omdat het nog geïnstalleerd moest worden. Dit heb ik geprobeerd maar zonder succes, ik weet wel dat het mogelijk is. Om de informatie uit de RSS feeds te halen heb ik gebruik gemaakt van MagpierSS , deze engine zorgt ervoor dat je rss feeds kunt uitlezen en kunt tonen op je site, ik heb van deze engine alleen de functie fetch_rss() gebruik gemaakt, het parsen wilde ik doen dmv zelfgeschreven functies.(op de volgende pagina staat de code die ervoor zorgt dat de rss feeds worden geparsed).


if(!empty($_POST['query']))

{

//vul een variabele met de desbetreffende feed

$feed = “http://www.youtube.com/rss/tag/standaard.rss”;

//vervang een gedeelte van de feed met de ingevulde variabele

$result = str_replace(‘standaard’,$_POST['query'],$feed);

//zorg ervoor dat alle witruimte wordt verwijderd

$schoneString = str_replace(‘ ‘,”",$result);

//maak een object aan van een functie en vul hem met de ‘query’

$rss = fetch_rss($schoneString);

//we willen 1 resultaat, dus we knippen de array in 1 stukje

$items = array_slice($rss->items,0,1);

//we zorgen ervoor dat we de gegevens van de array uitlezen dmv een loop

foreach($items as $item){

//koppel de gegevens van de rss feed aan een variabele

$links = $item['link'];

$title = $item['title'];

//START uitspugen xml document

//maak een array aan (dit voor het vormgeven van het xml bestand)

$artiesten = array();

$artiesten[] = array(

‘naam’ => $title,

‘link’ =>$links

);

Hoe kon het beter?

Zoals ik al aangaf wilde ik sowieso met XSLTProcessor gaan werken, deze maakte het ook mogelijk om het xml bestand te koppelen aan een xslt bestand, dit was ivm technische redenen niet mogelijk voor mij. Je kan met deze klasse ook meerdere rss feeds aan elkaar koppelen en als 1 groot xml bestand behandelen. In mijn versie is het zo dat er maximaal 1 rss feed uitgelezen kon worden, wil je meerdere rss feeds lezen dan kan je dus het beste ze aan elkaar koppelen als 1 lang bestand!

Het parsen van de rss feeds was ook erg omslachtig, volgende keer gebruik ik fijn XPATH om de rss feeds uit te lezen en te plaatsen in meerdere variabelen.

Dus, nog even kort samengevat:

Gebruik XSLTProcessor klasse om de rss feeds te koppelen aan elkaar, en xslt documenten te koppelen aan het xml bestand. Gebruik daarna xpath om alles uit te lezen wat jij relevant vind.

Ik ga in ieder geval verder met xml, dit is voor mij een persoonlijk leerpunt. Het is leuk en handig!

Follow

Get every new post delivered to your Inbox.