NEWS

xml - Daten auslesen



  • Hallo Zusammen,

    ich möchte in meiner Visualisierung die Abfahrtszeiten der nächsten Straßenbahnen darstellen. Der RMV bietet dafür eine API, die xml Daten zurückliefert. Ich bekomme das xml aber nicht gescheit auseinander geparst.

    Die XML sieht wie folgt aus:

    <?xml version="1.0" encoding="UTF-8"?> 
    <DepartureBoard serverVersion="1.9" dialectVersion="1.23" requestId="1582997804703" xmlns="hafas_rest">
    
    <Departure direction="Frankfurt (Main) Rheinlandstraße" name="Tram 12 " trainNumber="5918" trainCategory="BTS" reachable="true" type="S" stopid="A=1@O=Frankfurt (Main) Günthersburgpark@X=8699931@Y=50128831@U=80@L=3001501@" stopExtId="3001501" stop="Frankfurt (Main) Günthersburgpark" date="2020-02-29" time="18:35:00" rtDate="2020-02-29" rtTime="18:37:00" prognosisType="PROGNOSED"><JourneyDetailRef ref="1|21927|3|80|29022020"/><JourneyStatus>P</JourneyStatus><Product catCode="5" catIn="BTS" catOut="Tram " catOutL="Niederflurstraßenbahn" catOutS="BTS" line="12" name="Tram 12 " num="5918" operator="Stadtwerke Verkehrsgesellschaft Frankfurt" operatorCode="VGF" admin="TRAFBT"/><Notes><Note routeIdxFrom="4" routeIdxTo="32" key="gu" priority="350" type="A">Türen mit Mehrzweckfläche sind mit gelbem Balken über der Tür gekennzeichnet</Note><Note routeIdxFrom="4" routeIdxTo="32" key="FD" type="I">120087</Note></Notes></Departure>
    
    <Departure direction="Frankfurt (Main) Rheinlandstraße" name="Tram 12 " trainNumber="6086" trainCategory="BTS" reachable="true" type="S" stopid="A=1@O=Frankfurt (Main) Günthersburgpark@X=8699931@Y=50128831@U=80@L=3001501@" stopExtId="3001501" stop="Frankfurt (Main) Günthersburgpark" date="2020-02-29" time="18:45:00" rtDate="2020-02-29" rtTime="18:47:00" prognosisType="PROGNOSED"><JourneyDetailRef ref="1|21939|3|80|29022020"/><JourneyStatus>P</JourneyStatus><Product catCode="5" catIn="BTS" catOut="Tram " catOutL="Niederflurstraßenbahn" catOutS="BTS" line="12" name="Tram 12 " num="6086" operator="Stadtwerke Verkehrsgesellschaft Frankfurt" operatorCode="VGF" admin="TRAFBT"/><Notes><Note routeIdxFrom="8" routeIdxTo="36" key="gu" priority="350" type="A">Türen mit Mehrzweckfläche sind mit gelbem Balken über der Tür gekennzeichnet</Note><Note routeIdxFrom="8" routeIdxTo="36" key="FD" type="I">120088</Note></Notes></Departure>
    
    <Departure direction="Frankfurt (Main) Rheinlandstraße" name="Tram 12 " trainNumber="5919" trainCategory="BTS" reachable="true" type="S" stopid="A=1@O=Frankfurt (Main) Günthersburgpark@X=8699931@Y=50128831@U=80@L=3001501@" stopExtId="3001501" stop="Frankfurt (Main) Günthersburgpark" date="2020-02-29" time="18:55:00" rtDate="2020-02-29" rtTime="18:55:00" prognosisType="PROGNOSED"><JourneyDetailRef ref="1|21927|4|80|29022020"/><JourneyStatus>P</JourneyStatus><Product catCode="5" catIn="BTS" catOut="Tram " catOutL="Niederflurstraßenbahn" catOutS="BTS" line="12" name="Tram 12 " num="5919" operator="Stadtwerke Verkehrsgesellschaft Frankfurt" operatorCode="VGF" admin="TRAFBT"/><Notes><Note routeIdxFrom="4" routeIdxTo="32" key="gu" priority="350" type="A">Türen mit Mehrzweckfläche sind mit gelbem Balken über der Tür gekennzeichnet</Note><Note routeIdxFrom="4" routeIdxTo="32" key="FD" type="I">120089</Note></Notes></Departure></DepartureBoard>
    

    Mein Javascriptversuch die Zeiten auszulesen sieht wie folgt aus:

            var url = 'https://www.rmv.de/hapi/departureBoard?id=3001501&direction=3000508&rtMode=REALTIME&maxJourneys=3&duration=240&accessId=abc.def.ghi';
            request(url, function (err, state, body){
                if (body) {
                    var DOMParser = require('xmldom').DOMParser;
                    var xml_obj = new DOMParser().parseFromString(body, "text/xml");
                    var timestamp0 = xml_obj.getElementsByTagName()DepartureBoard.Departure[0].time;
                    var timestamp1 = xml_obj.getElementsByTagName()DepartureBoard.Departure[1].time;
                    var timestamp2 = xml_obj.getElementsByTagName()DepartureBoard.Departure[2].time;
                    log("Abfahrt 0: "+timestamp0);
                    log("Abfahrt 1: "+timestamp1);
                    log("Abfahrt 2: "+timestamp2);
                          } else {
                }
            })
    

    Wenn ich das Script starte kommt "compile failed at script.js.abfahrt:6"

    Kann mir bitte jemand auf die Sprünge helfen?

    Danke und Grüße,
    Balu



  • @Balu1973
    Verwende besser das ebenfalls angebotene JSON-Format, das sich in Javascript viel besser verarbeiten läßt.



  • @paul53
    Danke für den Tipp. Das json auch geht hatte ich überlesen.

    Wenn trotzdem noch jemand weiß wie das mit XML klappt, nehme ich die Hinweise auch noch dankend an. Wer weiß, wo man es noch brauchen kann 😉



  • @Balu1973 Schau mal nach dem Modul xml2js.


Log in to reply
 

Suggested Topics

1.3k
Online

32.6k
Users

39.1k
Topics

530.3k
Posts