[PHP] XML naar HTML

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik zoek naar een methode om een feed als HTML of platte tekst te presenteren maar kom er niet helemaal uit. Ik heb diverse functies geprobeerd, alsmede met reguliere expressies de informatie uit de feed te halen maar ik krijg nooit resultaat.

Als laatste poging heb ik de functie simplexml_load_file() geprobeerd. Hierbij krijg ik een mooi overzicht van de gehele feed. Het probleem is echter wederom dat ik de informatie er niet fatsoenlijk uit krijg. Waarschijnlijk omdat ik de ervaring met objecten een beetje mis.

Op php.net heb ik de volgende functie gevonden:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function object2array($object)
{
   $return = NULL;
      
   if(is_array($object))
   {
       foreach($object as $key => $value)
           $return[$key] = object2array($value);
   }
   else
   {
       $var = get_object_vars($object);
          
       if($var)
       {
           foreach($var as $key => $value)
               $return[$key] = object2array($value);
       }
       else
           return strval($object);
   }

   return $return;
}

$feed = simplexml_load_file("een_feed"); 
object2array($feed);


Voor zover ik kan beoordelen zou deze moeten werken, maar ook hier krijg ik weer een leeg scherm.

Wat ik probeer te bereiken is dat je ik een HTML bestand genereer dat de laatste vijf items pakt en deze presenteert als bijvoorbeeld:

<a href="url">Titel</a>
Datum / Plaats - Korte beschrijving

Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:07

TeeDee

CQB 241

Transformeren met XSL?
Heb je je Array al eens ge-echo-ed? Dan zou je toch wel iets moeten zien.
Verder: een leeg scherm? Staat er wel iets in de source-code van de html?

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
xml_parse_into_struct();

dan heb je een array en dan kun je wat met foreach doen

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik de array echo bijv:

echo '<pre>';
print_r($feed);
echo '</pre>';

Dan krijg ik de gehele feed te zien. Bijvoorbeeld:
[item] => Array
(
[0] => SimpleXMLElement Object
(
[title] => De titel
[description] => Beschrijving
[link] => URL
[pubDate] => Datum, tijd
)
etc
Ik krijg de informatie alleen niet gepresenteerd.

Acties:
  • 0 Henk 'm!

  • ATS
  • Registratie: September 2001
  • Laatst online: 18-09 15:14

ATS

Waarom denk je dat je dat binnen PHP met één functie kan doen? Maargoed, TeeDee geeft je al een zinnige tip... Wat je ook kan doen is helemaal niet parsen, maar gewoon een stylesheet aan je XML hangen en hem direct aan je browser voeren.

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 21:07

TeeDee

CQB 241

Nu is mijn PHP kennis 0,0 maar kan je niet (qua logica) het volgende doen:
code:
1
2
3
4
for(int n=0;n<item.count;n++)
{
  echo item[n][title].value
}

doen?

Heart..pumps blood.Has nothing to do with emotion! Bored


Acties:
  • 0 Henk 'm!

  • FragFrog
  • Registratie: September 2001
  • Laatst online: 22:47
Inderdaad TeeDee ;)

Aangezien je wilt weergeven is het wellicht een idee naar smarty te kijken, die kan je prachtig je array met waardes meegeven en in een template stoppen :)

Met array's werken is in het begin even lastig weet ik uit ervaring, maar kijk eens naar de voorbeelden bij foreach, die zouden je al een idee moeten geven hoe (simpel) je eigenlijk een array kan doorlopen.

[ Site ] [ twitch ] [ jijbuis ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt voor de replies.

Ik heb inderdaad flink met de arrays zitten stoeien, eigenlijk al voordat ik het topic opende. Maar het lijkt wel also ik niet de goede waardes kan vinden. Ik krijg bij alles wat ik probeer te echo-en geen resultaat.

Ter illustratie de feed van nu.nl.
<?xml version="1.0" encoding="ISO-8859-1" ?>
- <rss version="2.0">
- <channel>
<title>NU.nl Algemeen Nieuws</title>
<copyright>Copyright (c) 2005, NU.nl</copyright>
<link>http://www.nu.nl/rubriek/100/10</link>
<language>nl</language>
<description>NU.nl Rich Site Summary</description>
<webMaster>webmaster@nu.nl</webMaster>
- <image>
<title>NU.nl</title>
<link>http://www.nu.nl/</link>
<url>http://www.nu.nl/img/header_rss_nieuws.gif</url>
<width>125</width>
<height>35</height>
<description>Het laatste nieuws lees je het eerst op NU.nl</description>
</image>
<pubDate>Fri, 17 Aug 2007 01:53:24 +0200</pubDate>
- <item>
<title>Orkaan Dean wint aan kracht</title>
<link>http://www.nu.nl/news/1198020/74/rss/_Orkaan_Dean_wint_aan_kracht.html</link>
- <description>
- <![CDATA[ MIAMI - De orkaan Dean, die boven de Atlantische Oceaan op de Bovenwindse Antillen afstevent, heeft aan kracht gewonnen.
]]>
</description>
<pubDate>Thu, 16 Aug 2007 23:30:33 +0200</pubDate>
<category>Algemeen</category>
</item>
Ik probeer dan in een loop iets in de trend als:

code:
1
2
$feed = object2array(simplexml_load_file("de_nu_nl_feed")); // Zie functie in startpost.
echo $feed[item][title];


Wat voor combinatie ik ook probeer, ik krijg er niets uit. De oplossing is waarschijnlijk zeer gemakkelijk en ik ben waarschijnlijk ook niet echt snugger bezig, vandaar dat ik ook hier om hulp komen vragen. :)

Ik heb het overigens inmiddels wel opgelost met MagPieRSS, maar dat is niet helemaal mijn bedoeling. Ik wel er wel iets van leren en niet domweg copy&pasten / aanpassen. MagPie gebruikt een heel andere manier.

[ Voor 15% gewijzigd door Verwijderd op 17-08-2007 02:12 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Met de functie print_r kun je eenvoudig een array op het scherm weergeven zodat je kan zien wat je doet.

Daarnaast mis je een paar quotes in het laatste stukje code wat je geeft, dat kan goed het probleem veroorzaken.

Als je iets wilt leren moet je gewoon even goed in de manual lezen wat de functies die je gebruikt doen en hoe je ze kunt gebruiken om te bereiken wat jij wil. Op die manier leer je er veel van.

Acties:
  • 0 Henk 'm!

  • SWINX
  • Registratie: Juni 2001
  • Laatst online: 23-07 18:19
undefined constants worden als string teruggegeven, dus het probleem ligt daar niet.
Maar los daarvan geldt nog steeds: Quote je named variabelen :)

Mannen komen van Mars Tweakers, vrouwen van Venus Bokt

Pagina: 1