NS API XML tags

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Maikel Nachter

Maikel Nachter

03/11/2011 13:15:59
Quote Anchor link
Hallo allemaal,

Ik ben een tijdje bezig met het maken van een NS app. Ik zit nu met het volgende probleem.

Ik heb een zoekform waarmee je naar verschillende stations kan zoeken. Als zoekresultaat geven de stations de actuele vertrektijden weer voor de aankomende treinen. Door middel van nodes haal ik deze data op uit de XML van NS. Nu is het probleem dat sommige treinen de ene keer wel bepaalde tags hebben en de andere keer niet. Een voorbeeld is de <VertrekVertragingTekst> tag. Niet elke trein heeft vertraging. Als de trein geen vertraging heeft, wordt deze tag niet meegegeven aan de trein.

XML van één trein:

<VertrekkendeTrein>
<RitNummer>3541</RitNummer>
<VertrekTijd>2011-11-03T12:22:00+0100</VertrekTijd>
<VertrekVertraging>PT16M</VertrekVertraging>
<VertrekVertragingTekst>+16 min</VertrekVertragingTekst>
<EindBestemming>Eindhoven</EindBestemming>
<TreinSoort>Intercity</TreinSoort>
<RouteTekst>s-Hertogenbosch</RouteTekst>
<VertrekSpoor wijziging="false">15</VertrekSpoor>
</VertrekkendeTrein>

Deze trein heeft wel vertraging, dus wel die ene tag. Andere treinen hebben het weer niet, omdat ze dus geen vertraging hebben.

Ik wil dus zoiets van: als de tags er niet zijn moeten ze niet worden weergegeven. Nu wordt de volgende fout weergegeven: "Trying to get property of non-object".

Deel van de code:



Form:
<form action="index.php" method="get">
<p>Station: <input name="station" value="
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php   print($station);?>
"/> </p>
<input type="submit" />
</form>

Nodes:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php foreach( $XMLNRC->selectNodes("/ActueleVertrekTijden/VertrekkendeTrein") as $xmlItem ) {     ?>

<h2>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $xmlItem->selectSingleNode("EindBestemming")->nodeValue ; ?>
</h2>
<p>Vertrektijd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $xmlItem->selectSingleNode("VertrekTijd")->nodeValue ; ?>
</p>
<p>Via:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $xmlItem->selectSingleNode("RouteTekst")->nodeValue ; ?>
</p>
<p>Treinsoort:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $xmlItem->selectSingleNode("TreinSoort")->nodeValue ; ?>
</p>
<p>Vertrekspoor:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $xmlItem->selectSingleNode("VertrekSpoor")->nodeValue ; ?>
</p>
<p>Vertraging:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php print $xmlItem->selectSingleNode("VertrekVertragingTekst")->nodeValue ; ?>
</p>
Gewijzigd op 03/11/2011 13:28:40 door Maikel Nachter
 
PHP hulp

PHP hulp

24/11/2024 19:52:16
 
- Ariën  -
Beheerder

- Ariën -

03/11/2011 13:43:02
Quote Anchor link
Kan je niet controleren met isset() ?
 
Maikel Nachter

Maikel Nachter

03/11/2011 13:45:11
Quote Anchor link
Heb ik geprobeerd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
            if(isset($xmlItem)) {  
            print $xmlItem->selectSingleNode("VertrekVertragingTekst")->nodeValue ;
            }
else {
            echo "tag bestaat niet";
            ?>


Alleen wordt er gezegd: Parse error: syntax error, unexpected $end in D:\School\PHP\voorbeelden\rss\index.php on line 60
 
Jelle -

Jelle -

03/11/2011 13:47:27
Quote Anchor link
Een unexpected $end betekend meestal een accolade vergeten
Als je tabs gebruikt zie je al snel waar je hem vergeten bent
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
  if(isset($xmlItem)) {  
    print $xmlItem->selectSingleNode("VertrekVertragingTekst")->nodeValue ;
  }
else {
    echo "tag bestaat niet";
    //hier moet volgens mij een accolade staan
?>
 
Maikel Nachter

Maikel Nachter

03/11/2011 13:55:49
Quote Anchor link
Ik was een "}" vergeten. Maar hij geeft nu weer dezelfde fout, ook met de Isset. Ik denk zelf dat de tag anders benaderd moet worden, maar geen idee hoe:S
Gewijzigd op 03/11/2011 14:04:57 door Maikel Nachter
 
- Ariën  -
Beheerder

- Ariën -

03/11/2011 14:33:22
Quote Anchor link
Nog steeds die 'unexpected' error?
 
Maikel Nachter

Maikel Nachter

03/11/2011 14:34:26
Quote Anchor link
Ik heb hem naar iemand anders gestuurd, heeft hem in MAMP en op zijn eigen server getest. Werkt zonder errors. Ik werk met oudere versie van WAMP.

Kan er iets mee te maken hebben? Alsnog bedankt allen.

http://daankuhlmann.nl/michael/
Gewijzigd op 03/11/2011 14:34:54 door Maikel Nachter
 
Roel -

Roel -

03/11/2011 16:08:37
Quote Anchor link
Ik neem aan dat dat er niks mee te maken heeft. De isset functie zit al in PHP sinds versie 4.
Ik raad je aan een goede editor met highlighting te gebruiken en bij if-statements in te springen, dan zie je unexpected errors veel en veel sneller dan dat je moet gaan prielen met oningesprongen code.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.