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 habe eine xml datei die ich parden möchte

      da die Daten (icontype und title) an die ich heran möchte als Atribute eingetragen sind weiß ich jetzt nicht wie ich diese parsen kann. Ich möchte diese in einer for Schleife weiterverarbeiten…

      Gruß

      Sveni-Lee

      1 Reply Last reply Reply Quote 0
      • 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

                                  718
                                  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