Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [gelöst] xml Daten einer URL weiterverarbeiten

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    221

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    4.5k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.3k

[gelöst] xml Daten einer URL weiterverarbeiten

Scheduled Pinned Locked Moved Skripten / Logik
27 Posts 6 Posters 10.7k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Y Offline
    Y Offline
    ykuendig
    wrote on last edited by
    #17

    Ich hab kein Bose. Aber der String kopiert und eingefügt hatte bei mir auch Probleme gemacht. Kann es sein, dass das result noch irgend wie gefiltert und / oder utf-8-ed werden muss?

    Gruss Yves

    1 Reply Last reply
    0
    • BluefoxB Offline
      BluefoxB Offline
      Bluefox
      wrote on last edited by
      #18

      @ykuendig:

      Ich hab kein Bose. Aber der String kopiert und eingefügt hatte bei mir auch Probleme gemacht. Kann es sein, dass das result noch irgend wie gefiltert und / oder utf-8-ed werden muss? `
      Bei mir funktioniert das:

      var parseString = require('xml2js').parseString;
      var request = require('request');
      
      //request('http://192.168.178.xx:8090/now_playing', function (error, response, body) {
          //if (!error && response.statusCode == 200) {
          var body = '<nowplaying deviceid="08DF1F46E63F" source="INTERNET_RADIO"><contentitem source="INTERNET_RADIO" location="32759" sourceaccount/ispresetable="true"><itemname>WDR 2 Münsterland</itemname></contentitem><track><artist></artist><album></album><stationname>WDR 2 Münsterland</stationname><art artimagestatus="IMAGE_PRESENT">http://logo.vtuner.net/007452/logo/logo-32759.jpg</art><playstatus>PLAY_STATE</playstatus><description>MP3  128 kbps  Internet Only,  Aktuelle Infos, Sport, Service und Unterhaltung prägen WDR 2\. Dazu aktuelle Hits und erwachsene Rock und Popmusik der letzten 30 Jahre.</description><stationlocation>Internet Only</stationlocation></nowplaying>';
            log("Body: " + body);
      
            parseString(body, {
                  explicitArray: false,
                  mergeAttrs: true
               }, 
               function (err, result) {
                  if (err) {
                     log("Fehler: " + err);
                  } else {
                     log("Result: " + JSON.stringify(result.nowPlaying));
                  }
               });
         //} else  {
         //  log(error);
         //}
      //});
      

      Output:

      javascript-0	2015-06-15 21:45:30	info	script.js.Script1: registered 0 subscriptions and 0 schedules
      javascript-0	2015-06-15 21:45:30	info	script.js.Script1: Result: {'deviceID':'08DF1F46E63F','source':'INTERNET_RADIO','ContentItem':{'source':'INTERNET_RADIO','location':'32759','sourceAccount':'','isPresetable':'true','itemName':'WDR 2 Münsterland'},'track':'','artist':'','album':'','stationName':'WDR 2 Münsterland','art':{'_':'http://logo.vtuner.net/007452/logo/logo-32759.jpg','artImageStatus':'IMAGE_PRESENT'},'playStatus':'PLAY_STATE','description':'MP3 128 kbps Internet Only, Aktuelle Infos, Sport, Service und Unterhaltung prägen WDR 2\. Dazu aktuelle Hits und erwachsene Rock und Popmusik der letzten 30 Jahre.','stationLocation':'Internet Only'}
      javascript-0	2015-06-15 21:45:30	info	script.js.Script1: Body: WDR 2 MünsterlandWDR 2 Münsterlandhttp://logo.vtuner.net/007452/logo/logo-32759.jpgPLAY_STATEMP3 128 kbps Internet Only, Aktuelle Infos, Sport, Service und Unterhaltung prägen WDR 2\. Dazu aktuelle Hits und erwachsene Rock und Popmusik der letzten 30 Jahre.Internet Only
      javascript-0	2015-06-15 21:45:30	info	Start javascript script.js.Script1
      
      
      1 Reply Last reply
      1
      • htreckslerH Offline
        htreckslerH Offline
        htrecksler
        Forum Testing
        wrote on last edited by
        #19

        yes…

        Der code

        var parseString = require('xml2js').parseString;
        var request = require('request');
        
        request('http://192.168.178.26:8090/now_playing', function (error, response, body) {
            if (!error && response.statusCode == 200) {
            //var body = '<nowplaying deviceid="08DF1F46E63F" source="INTERNET_RADIO"><contentitem source="INTERNET_RADIO" location="32759" sourceaccount/ispresetable="true"><itemname>WDR 2 Münsterland</itemname></contentitem><track><artist></artist><album></album><stationname>WDR 2 Münsterland</stationname><art artimagestatus="IMAGE_PRESENT">http://logo.vtuner.net/007452/logo/logo-32759.jpg</art><playstatus>PLAY_STATE</playstatus><description>MP3  128 kbps  Internet Only,  Aktuelle Infos, Sport, Service und Unterhaltung prägen WDR 2\. Dazu aktuelle Hits und erwachsene Rock und Popmusik der letzten 30 Jahre.</description><stationlocation>Internet Only</stationlocation></nowplaying>';
              log("Body: " + body);
        
              parseString(body, {
                    explicitArray: false,
                    mergeAttrs: true
                 }, 
                 function (err, result) {
                    if (err) {
                       log("Fehler: " + err);
                    } else {
                       log("Result: " + JSON.stringify(result.nowPlaying));
                    }
                 });
           } else  {
             log(error);
           }
        });
        
        

        funktioniert. Zumindest habe ich jetzt keine Fehler mehr in der log-Datei.

        Jetzt brauch ich nur noch ein Beispiel wie ich daraus die einzelnen Werte selektieren kann.

        Kann ich dass jetzt wie ein Objekt ansprechen?

        Gruss Hermann

        ioBroker auf Proxmox (Debian) auf IntelNuc als Produktivsystem

        1 Reply Last reply
        1
        • BluefoxB Offline
          BluefoxB Offline
          Bluefox
          wrote on last edited by
          #20

          Als Ergebnis hast du ein Objekt:

          {"nowPlaying":
             {
          	'deviceID' : '08DF1F46E63F',
          	'source' : 'INTERNET_RADIO',
          	'ContentItem' : {
          		'source' : 'INTERNET_RADIO',
          		'location' : '32759',
          		'sourceAccount' : '',
          		'isPresetable' : 'true',
          		'itemName' : 'WDR 2 Münsterland'
          	},
          	'track' : '',
          	'artist' : '',
          	'album' : '',
          	'stationName' : 'WDR 2 Münsterland',
          	'art' : {
          		'_' : 'http://logo.vtuner.net/007452/logo/logo-32759.jpg',
          		'artImageStatus' : 'IMAGE_PRESENT'
          	},
          	'playStatus' : 'PLAY_STATE',
          	'description' : 'MP3 128 kbps Internet Only, Aktuelle Infos, Sport, Service und Unterhaltung prägen WDR 2\. Dazu aktuelle Hits und erwachsene Rock und Popmusik der letzten 30 Jahre.',
          	'stationLocation' : 'Internet Only'
             }
          }
          

          Und ja das ist ein Objekt. Wenn du z.B. artImageStatus extrahieren willst dann solltest du result.nowPlaying.art.artImageStatus aufrufen.

          1 Reply Last reply
          0
          • htreckslerH Offline
            htreckslerH Offline
            htrecksler
            Forum Testing
            wrote on last edited by
            #21

            Perfekt, funktioniert. Danke Euch allen.

            Gruss Hermann

            ioBroker auf Proxmox (Debian) auf IntelNuc als Produktivsystem

            1 Reply Last reply
            0
            • M Offline
              M Offline
              mameier1234
              wrote on last edited by
              #22

              Ich muss hier leider nochmal nachfragen…

              ich kann meinen Heizölstand elektronisch abfragen.. unter http://192.168.xx.xx/xml bekomme ich vollgendes Ergebniss

              This XML file does not appear to have any style information associated with it. The document tree is shown below.
               <seqsmartbox xmlns="http://tecson.dev.oilview.de/gateway/xsd" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" xsi:schemalocation="http://tecson.dev.oilview.de/gateway/xsd/smartbox.xsd"><seqheader><indication>Manuelle Abfrage</indication>
              <authcode>03B41236A899</authcode>
               <devoperator><devlocation><devid>2-852</devid>
              <devversion>V6.02</devversion></devlocation></devoperator></seqheader> 
               <seqdata><seqtanks><tanknumber>1</tanknumber>
              <tankname>Heizöl</tankname>
               <seqtanklevel><tanklevel>490</tanklevel>
              <tankunit>L</tankunit></seqtanklevel> 
              <tankpercent>5</tankpercent>
               <seqtanksize><tanksize>10000</tanksize>
              <tankunit>L</tankunit></seqtanksize> 
               <seqtankclear><tankclearance>9010</tankclearance>
              <tankunit>L</tankunit></seqtankclear></seqtanks></seqdata> 
               <seqpara><para1>30</para1>
              <para2>15</para2>
              <para4>0</para4>
              <para5>5</para5>
              <para9>0</para9></seqpara></seqsmartbox> 
              

              Was mich nun interessiert ist der wert von <tanklevel>490</tanklevel> …. also nur 490 in einem Objekt...

              Ganz ehrlich... ich bekomms nicht hin.

              Hat mir da noch jemand eine Idee ?

              das mit dem xml2js habe ich schon probiert... Allerdings kann man unter Admin3 wohl keine Module mehr eintragen.. Der Save Button wird nicht aktiv... Zur Zeit ist es bei mir noch so, dass wenn ich über iobroker.pro gehe und damit die Admin Seite aufrufe noch eine 2.x Version kommt. Hier kann ich die xml2js eintragen (und die ist nachher auch in der 3.0 eingetragen..)

              Ich bekomme nur einen "Error: Parse Error" , wenn ich das hier ausführe:

              var parseString = require('xml2js').parseString;
              var request = require('request');
              
              request('http://192.168.160.80/xml', function (error, response, body) {
                  if (!error && response.statusCode == 200) {
                   log("Body: " + body);
              
                    parseString(body, {
                          explicitArray: false,
                          mergeAttrs: true
                       }, 
                       function (err, result) {
                          if (err) {
                             log("Fehler: " + err);
                          } else {
                             log("Result: " + JSON.stringify(result.tankLevel));
                          }
                       });
                 } else  {
                   log(error);
                 }
              });
              

              Irgendwelche Vorschläge ?

              Grüße,

              Martin

              1 Reply Last reply
              0
              • ruhr70R Offline
                ruhr70R Offline
                ruhr70
                wrote on last edited by
                #23

                @mameier1234:

                Allerdings kann man unter Admin3 wohl keine Module mehr eintragen.. Der Save Button wird nicht aktiv… Zur Zeit ist es bei mir noch so, dass wenn ich über iobroker.pro gehe und damit die Admin Seite aufrufe noch eine 2.x Version kommt. Hier kann ich die xml2js eintragen (und die ist nachher auch in der 3.0 eingetragen..) `

                Da bin ich auch drüber gestolpert. :-)

                Du musst , wenn Du im Javascript-Adapter den Modulnamen eingegeben hast, [ENTER] drücken.

                Ich bin anfangs immer mit [TAB] weiter und dann wird der Speicherbutton nicht aktiv.

                Benötigst Du nur diesen einen Wert? <tanklevel>490</tanklevel>

                Das ist dann wahrscheinlich am Einfachsten, wenn Du einfach den Parser oder Systeminfo-Adapter nimmst oder im Skript

                Ein Beispiel für ein Regex für den Wert: https://regex101.com/r/uoymuu/1

                Adapter: Fritzbox, Unify Circuit
                Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mameier1234
                  wrote on last edited by
                  #24

                  Morgen…

                  Danke für den Tipp...

                  Das mit dem Sysinfo-Adapter hatte ich versucht... es scheiterte aber an der richtigen Regex...

                  Nun kommt mit dem Parsermodul: arser.0 2018-02-22 07:06:51.277 error Cannot read link "http://192.168.160.80/xml": Error: Parse Error

                  parser.0 2018-02-22 07:06:41.244 error Cannot read link "http://192.168.160.80/xml": Error: Parse Error

                  Sysinfo: ähnliche Fehlermeldung...
                  4885_parser.png

                  Grüße,

                  Martin

                  1 Reply Last reply
                  0
                  • ruhr70R Offline
                    ruhr70R Offline
                    ruhr70
                    wrote on last edited by
                    #25

                    Du bekommst beim Skript, Parser Adapter und Systeminfo Adapter jeweils einen parse Error.

                    Was bekommst Du denn im Log als Ausgabe, wenn Du bei Deinem Skript den Teil mit parseString weglässt.

                          parseString(body, {
                                explicitArray: false,
                                mergeAttrs: true
                             }, 
                             function (err, result) {
                                if (err) {
                                   log("Fehler: " + err);
                                } else {
                                   log("Result: " + JSON.stringify(result.tankLevel));
                                }
                             });
                    
                    

                    Wird mit der Zeile log("Body: " + body); denn der Inhalt der XML im Log ausgegeben?

                    Adapter: Fritzbox, Unify Circuit
                    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                    mac89mucM 1 Reply Last reply
                    0
                    • M Offline
                      M Offline
                      mameier1234
                      wrote on last edited by
                      #26

                      Aeeh…. Ne!

                      Grüße,

                      Martin

                      1 Reply Last reply
                      0
                      • ruhr70R ruhr70

                        Du bekommst beim Skript, Parser Adapter und Systeminfo Adapter jeweils einen parse Error.

                        Was bekommst Du denn im Log als Ausgabe, wenn Du bei Deinem Skript den Teil mit parseString weglässt.

                              parseString(body, {
                                    explicitArray: false,
                                    mergeAttrs: true
                                 }, 
                                 function (err, result) {
                                    if (err) {
                                       log("Fehler: " + err);
                                    } else {
                                       log("Result: " + JSON.stringify(result.tankLevel));
                                    }
                                 });
                        
                        

                        Wird mit der Zeile log("Body: " + body); denn der Inhalt der XML im Log ausgegeben?

                        mac89mucM Offline
                        mac89mucM Offline
                        mac89muc
                        wrote on last edited by
                        #27

                        @ruhr70

                        Hallo zusammen,

                        ich habe eine ähnliches Problem beim auslesen meines Akkustandes vom Sonos Move, habe allerdings einen neuen Thread dazu aufgemacht nachdem der Hinweis mit dem hohen Alter dieses Threads beim erstellen meiner Antwort aufkam.

                        Keine Ahnung wie sich das mit Doppelpostings verhält, daher möchte ich ungern hier nochmal alles komplett posten.
                        Falls sich jemand findet, der hier schon mal helfen konnte und bereit ist sich mein Problem unter folgendem Link hier im Forum anzusehen wäre ich dankbar.

                        [https://forum.iobroker.net/topic/44272/xml-return-in-blockly-weiter-verarbeiten](Neuer Forumsbeitrag - XML return in Blockly weiterverarbeiten)

                        Vielen Dank im Voraus - Gruß

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        Support us

                        ioBroker
                        Community Adapters
                        Donate

                        579

                        Online

                        32.7k

                        Users

                        82.5k

                        Topics

                        1.3m

                        Posts
                        Community
                        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                        ioBroker Community 2014-2025
                        logo
                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Home
                        • Recent
                        • Tags
                        • Unread 0
                        • Categories
                        • Unreplied
                        • Popular
                        • GitHub
                        • Docu
                        • Hilfe