Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

XML-element met onbekend nummer uitlezen

Pagina: 1
Acties:

  • Mr. Awesome
  • Registratie: Januari 2006
  • Laatst online: 26-08 18:34

Mr. Awesome

Vroeger hyptonize

Topicstarter
Als opdracht van school ben ik bezig om mijn stats van WhatPulse uit te lezen en die weer te geven in grafieken. WhatPulse heeft een Web API die de stats aanbiedt in XML of JSON. Nu heb ik al redelijk wat gegevens uit weten te lezen via de XML-variant, maar nu loop ik toch tegen een probleem aan.

Om even duidelijk te maken wat er probleem is, is misschien achterliggende informatie over WhatPulse wel handig om te weten:
WhatPulse is een programma die je (aantal) keys en clicks bijhoudt. Deze aantallen worden lokaal gespaard en opgeslagen, en worden een keer in de zoveel tijd (automatisch of handmatig) gestuurd naar de server. Dit worden pulses genoemd en deze pulses wil ik uitlezen. Dit kan via de API http://api.whatpulse.org/pulses.php?user=168885.

Echter worden de pulses gesorteerd door middel van hun pulsenummer op de XML-pagina. De nummers van de pulses lijken echter willekeurig (er zal wel een systeem in zitten). Zo heet de nieuwste pulse <Pulse-14157418> en de pulse daarna heet <Pulse-141495637>. Dit nummer is dus praktisch onbekend en een for-loop lijkt me hier ook niet echt geschikt voor omdat het over grote getallen gaat.

Nu weet ik dus niet hoe ik deze uit moet lezen.
De gegevens zou ik uit kunnen lezen met bv. $feed->Pulse->Keys, maar hoe doe ik dit als er een onbekend getal tussen zit...?

Ik moet er ook even bij vermelden dat mijn PHP-kennis niet heel hoog is. ;)




Hierbij een stuk code die ik gebruik om een ander deel van de API uit te lezen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$uid = 168885;
$source = 'http://api.whatpulse.org/user.php?user='. $uid;
$feed = simplexml_load_file($source);
 
 $keys = $feed->Keys;
 $clicks = $feed->Clicks;

 $wp_array = array(
  "apichangetimestamp" => $feed->GeneratedTime,
  "name" => $feed->AccountName,
  "country" => $feed->Country,
  "Joindate" => $feed->DateJoined,
  "Homepage" => $feed->Homepage,
  "LastPulse" => $feed->LastPulse,
  "keys" => $keys,
  "clicks" => $clicks,  
  );

[ Voor 19% gewijzigd door Mr. Awesome op 22-06-2014 14:17 ]


  • kamustra
  • Registratie: November 2006
  • Niet online
Als ik het goed begrijp wil je informatie uit een xmlfeed lezen voor alle verstuurde pulses?
Dus de informatie in een xml als deze xml verwerken?

Dan kan je iets als dit doen:
PHP:
1
2
3
4
5
$feed = ... // Op dezelfde manier als je hierboven al deed
foreach($feed->children() as $child) {
   $Timedate = $child->Timedate
   ...
}

Zie ook de php manual: http://www.php.net/manual/en/class.simplexmlelement.php en http://php.net/manual/en/simplexmlelement.children.php

Je kan dus gewoon alle children doorlopen met een foreach lus, daar moet je dan geen teller of iterator voor bijhouden: php zal gewoon zelf alle pulses doorlopen.

[ Voor 13% gewijzigd door kamustra op 22-06-2014 14:30 ]


  • Mr. Awesome
  • Registratie: Januari 2006
  • Laatst online: 26-08 18:34

Mr. Awesome

Vroeger hyptonize

Topicstarter
kamustra schreef op zondag 22 juni 2014 @ 14:29:
Als ik het goed begrijp wil je informatie uit een xmlfeed lezen voor alle verstuurde pulses?
Dus de informatie in een xml als deze xml verwerken?

Dan kan je iets als dit doen:
PHP:
1
2
3
4
5
$feed = ... // Op dezelfde manier als je hierboven al deed
foreach($feed->children() as $child) {
   $Timedate = $child->Timedate
   ...
}

Zie ook de php manual: http://www.php.net/manual/en/class.simplexmlelement.php en http://php.net/manual/en/simplexmlelement.children.php

Je kan dus gewoon alle children doorlopen met een foreach lus, daar moet je dan geen teller of iterator voor bijhouden: php zal gewoon zelf alle pulses doorlopen.
Bedankt, dat is precies wat ik zocht! :D

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Welke aap heeft die XML verzonnen? :X Waarom niet gewoon <pulse id="12345">...</pulse>?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • kamustra
  • Registratie: November 2006
  • Niet online
Ik was het ook aan het denken, anders kon je die ID nog gebruiken om te kijken of je die al hebt gehad en mag stoppen of zo, nu zou je daar al kunstgrepen voor moeten uithalen om die te krijgen...