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 -
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.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden