Voor mijn scriptie ben ik bezig een site te maken waarin services automatisch aan elkaar gekoppeld worden. Een belangrijk gedeelte hiervoor is het standaardiseren van de output van de verschillende services. Gelukkig maken de meeste API's gebruik van simpele XML of JSON als output alleen sommige geven meer een RSS achtige feed terug. Bij deze feeds kom ik in de problemen om deze om te zetten richting een php array.
! Even om misverstanden te voorkomen ik ben een bedrijfskunde student en de site die ik wil maken is niets meer dan een tool om mijn experiment uit te voeren !
Voor de XML bestanden gebruik ik simplexml_load_string($data) en zet deze vervolgens om. Bij de RSS feeds kom ik echter in de problemen omdat deze gebruik maken van namespaces welke simplexml niet laat zien. Google Calendar doet dit bijvoorbeeld. Ik heb al geprobeerd om dit te tackelen door een aantal standaard parsers te gebruiken maar bijvoorbeeld rss_php.php (http://rssphp.net/) heeft het probleem dat hij dan alleen de laatste entry weergeeft. Magpie krijg ik niet aan de gang, daar zitten veel verwijzingsfouten in.
Voor simplexml hoopte ik dmv getDocNamespaces() en vervolgens registerXPathNamespace($key, $namespace); de namespaces duidelijk te maken mar dit is niet genoeg.
Wat ik probeer te bereiken is een generieke parser naar een array toe die elk willekeurig XML/RSS feed netjes omzet en daarbij ook de namespace variabelen meeneemt. Handmatig kan ik uiteraard wel precies aangeven welke namespaces er gebruikt moeten worden om bepaalde variabelen binnen te halen maar dit is nu net niet de bedoeling.
Hebben jullie nog ideeën hoe dit verder op te pakken?
! Even om misverstanden te voorkomen ik ben een bedrijfskunde student en de site die ik wil maken is niets meer dan een tool om mijn experiment uit te voeren !
Voor de XML bestanden gebruik ik simplexml_load_string($data) en zet deze vervolgens om. Bij de RSS feeds kom ik echter in de problemen omdat deze gebruik maken van namespaces welke simplexml niet laat zien. Google Calendar doet dit bijvoorbeeld. Ik heb al geprobeerd om dit te tackelen door een aantal standaard parsers te gebruiken maar bijvoorbeeld rss_php.php (http://rssphp.net/) heeft het probleem dat hij dan alleen de laatste entry weergeeft. Magpie krijg ik niet aan de gang, daar zitten veel verwijzingsfouten in.
Voor simplexml hoopte ik dmv getDocNamespaces() en vervolgens registerXPathNamespace($key, $namespace); de namespaces duidelijk te maken mar dit is niet genoeg.
Wat ik probeer te bereiken is een generieke parser naar een array toe die elk willekeurig XML/RSS feed netjes omzet en daarbij ook de namespace variabelen meeneemt. Handmatig kan ik uiteraard wel precies aangeven welke namespaces er gebruikt moeten worden om bepaalde variabelen binnen te halen maar dit is nu net niet de bedoeling.
Hebben jullie nog ideeën hoe dit verder op te pakken?