Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst]wie richtig einsetzen? npm Modul xml-js

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst]wie richtig einsetzen? npm Modul xml-js

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      sveni_lee last edited by

      ich hab's jetzt mal mit "try and error" probiert aber ich bekomme einfach kein Ergebnis

       var xmlstring ='';
       var xml2js = require('xml2js');
       var parser = new xml2js.Parser();
      
       on({id:"onkyo-vis.0.net-usb-list-info-allitems", change: "any"}, function (obj) {
          xmlstring = getState("onkyo-vis.0.net-usb-list-info-allitems").val;
          parser.parseString(xmlstring, function (err, result) {
              log('RESULT: '+ result['response']['items']);
              });
      
      });    
      
      

      ich bekomme aber kein ergebniss, sondern nur javascript.0 2018-07-02 16:07:18.119 info script.js.common.Onkyo_Player: RESULT: [object Object]

      ich komm einfach nicht darauf wie ich an die Attribute icontype und title komme…

      EDIT:

      kleiner schritt nach vorn... log('RESULT= ' + JSON.stringify(result)); gibt mit etwas aus…

      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        Wenn das Objekt result im Log angezeigt werden soll, muss es in einen JSON-String konvertiert werden.

                log('RESULT: '+ JSON.stringify(result['response']['items']));
        
        
        1 Reply Last reply Reply Quote 0
        • S
          sveni_lee last edited by

          ja… danke. Jetzt habe ich eine Ergebniss...

          [{'/r>:{'offset':'0','totalitems':'3'},'item':[{'/r>:{'icontype':'N','iconid':'2b','title':'GOTHAM-CITY'}},{'/r>:{'icontype':'N','iconid':'2b','title':'FRITZ-NAS'}},{'/r>:{'icontype':'N','iconid':'2b','title':'TABLET'}}]}]
          

          wie kann dieses Objekt in einer for-schleife auswerten?

          1 Reply Last reply Reply Quote 0
          • paul53
            paul53 last edited by

            Das ist ein Array im Array. Angenommen der Variablenname ist obj, dann versuche es mal so:

            `var item = obj[0].item;
            for(let i = 0; i < item.length; i++) {
               log('Titel' + (i+1) + ': ' + item[i].$.title);
            }`
            
            EDIT: Korrigiert (.$ eingefügt).[/i]
            
            1 Reply Last reply Reply Quote 0
            • S
              sveni_lee last edited by

              hmm… das wirft bei mir einen Fehler aus...

              Error in callback: Error: Uncaught, unspecified "error" event. (TypeError: Cannot read property 'item' of undefined
              
              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 last edited by

                Hast Du das Objekt verwendet, das mittels JSON.stringify() im Log ausgegeben wurde ?

                Ich habe es damit erfolgreich getestet.

                1 Reply Last reply Reply Quote 0
                • S
                  sveni_lee last edited by

                  :roll: natürlich… genau das war es.. jetzt klappt es...

                  DANKE!

                  1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 last edited by

                    @sveni_lee:

                    jetzt klappt es… `
                    Dann markiere bitte das Thema im Betreff des ersten Beitrags als [gelöst].

                    1 Reply Last reply Reply Quote 0
                    • S
                      sveni_lee last edited by

                      @Paul53

                      da ich versuche das ganze jetzt irgendwie in ein Widget zu packen hab ich da noch mal eine Frage,kann ich das ganze in die *js in mein Widget bekommen… ich habe xml2js und parser in den Widget ordner installiert aber irgendwie kommt er mit der Zeile

                      var parser = new xml2js.Parser({ explicitArray: true })
                      

                      nicht klar… muß ich parser auch erst nocht irgendwie mit require aufrufen?

                      1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 last edited by

                        @sveni_lee:

                        ich habe xml2js und parser in den Widget ordner installiert `
                        Das soll funktionieren ??

                        1 Reply Last reply Reply Quote 0
                        • S
                          sveni_lee last edited by

                          nein, das tut es ja eben nicht… 😢

                          meine nächste Idee ist es die xml in ein JSON zu wandeln, das klappt auch schon im Adapter:

                          {"response":{"$":{"status":"ok"},"items":[{"$":{"offset":"0","totalitems":"3"},"item":[{"$":{"icontype":"N","iconid":"2b","title":"TABLET"}},{"$":{"icontype":"N","iconid":"2b","title":"GOTHAM-CITY"}},{"$":{"icontype":"N","iconid":"2b","title":"FRITZ-NAS"}}]}]}}
                          

                          jetzt muss ich nur wieder an die icontype, iconid und title rankommen und das auch wieder in einer schleife…

                          Ich habe zwar schon einiges zu JSON.parse gefunden aber hier ist glaube ich ein Array in einem Array in einem JSON und damit bin ich überfordert…

                          1 Reply Last reply Reply Quote 0
                          • paul53
                            paul53 last edited by

                            `var item = obj.response.items[0].item;
                            for(let i = 0; i < item.length; i++) {
                               log('Titel' + (i+1) + ': ' + item[i].$.title);
                               log('Icontype' + (i+1) + ': ' + item[i].$.icontype);
                            }` [/i][/i]
                            
                            1 Reply Last reply Reply Quote 0
                            • S
                              sveni_lee last edited by

                              perfekt… Danke

                              mal schaun ob ich damit weiter komme...

                              1 Reply Last reply Reply Quote 0
                              • S
                                sveni_lee last edited by

                                hier mal ein kleiner Teilerfolg…

                                ich kann jetzt schon erfolgreich durch Home-Media browsen…

                                ~~![](</s><URL url=)https://i.imgur.com/pltlLQU.jpg" />

                                jetzt muß ich noch irgendwie beides zusammen in ein Widget bringen…~~

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                626
                                Online

                                31.7k
                                Users

                                79.9k
                                Topics

                                1.3m
                                Posts

                                2
                                15
                                872
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo