Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Error/Bug
    4. XML Parser Error: undefined

    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

    XML Parser Error: undefined

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

      hallo Freunde ich möchte eine XML-Datei in eine HTML Datei mittels Javascript kommands "übersetzten"

      Folgendes: Ich loope durch die XML Datei und greife mir die relevanten Sachen mittels DOM raus.

      225806bd-9c2d-4013-9340-e4b5913316f8-image.png

      Mein Problem: Meine if Überprüfung will einfach nicht funktionieren, ich bekomme immer diesen Error auf der Konsole:
      Uncaught TypeError: x[i].getElementsByTagName(...)[0] is undefined
      , da eben manchmal die ChildNote publication nicht in der XML-Datei aufzufinden ist.
      Dieser Error blockiert leider das gesamt Skript ... also bin ich für jeden Tipp dankbar

      Asgothian 1 Reply Last reply Reply Quote 0
      • Asgothian
        Asgothian Developer @Waytlion last edited by

        @waytlion

        Du musst dir das Element welches manchmal nicht da ist in eine temporäre Variable holen, und dann diese auf undefined prüfen.

        Wichtig dabei ist: das undefined darf nicht wie bei dir in '' stehen, da es nicht der Text "undefined" ist, sondern ein Wert der dafür steht das eine Variable keinen Wert bekommen hat.

        Nebenbei:

        Das Posten von Code als Screenshot ist nicht sinnvoll. Besser den code kopieren und in code tags (</>) posten.

        A.

        W 1 Reply Last reply Reply Quote 0
        • W
          Waytlion @Asgothian last edited by

          @asgothian

          Hallo,
          danke für die schnelle Antwort, habe den Code folgendermaßen angepasst:

          var x = xmlDoc.getElementsByTagName("eprint");
          var y = xmlDoc.getElementsByTagName("person_search");
          var z = xmlDoc.getElementsByTagName("abstract_original");

            for (let i = 0; i <x.length; i++) {
          
          titel = x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue + "<br />";
          
          publikation = "";
              
              var temp = x[i].getElementsByTagName("publication")[0].childNodes[0].nodeValue;
              if (typeof temp !== undefined){
                publikation = temp;
              }
              else{
                publikation = "0";
              }
          

          Der Error ist leider immer noch der selbe:
          Uncaught TypeError: x[i].getElementsByTagName(...)[0] is undefined

          Asgothian 1 Reply Last reply Reply Quote 0
          • Asgothian
            Asgothian Developer @Waytlion last edited by

            @waytlion sagte in XML Parser Error: undefined:

            @asgothian

            Hallo,
            danke für die schnelle Antwort, habe den Code folgendermaßen angepasst:

            var x = xmlDoc.getElementsByTagName("eprint");
            var y = xmlDoc.getElementsByTagName("person_search");
            var z = xmlDoc.getElementsByTagName("abstract_original");

              for (let i = 0; i <x.length; i++) {
            
            titel = x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue + "<br />";
            
            publikation = "";
                
                var temp = x[i].getElementsByTagName("publication")[0].childNodes[0].nodeValue;
                if (typeof temp !== undefined){
                  publikation = temp;
                }
                else{
                  publikation = "0";
                }
            

            Der Error ist leider immer noch der selbe:
            Uncaught TypeError: x[i].getElementsByTagName(...)[0] is undefined

            Versuch mal dieses:

            for (let i = 0; i <x.length; i++) {
              titel = x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue + "<br />";
              publikation = "0";
              const publicationElement = x[i].getElementsByTagName("publication");
              if (typeof publicationElement == 'array' && typeof publicationElement[0] == object && publicationElement[0].nodeValue != undefined)
                  publication = publicationElement[0].nodeValue 
            

            Alternativ sollte auch gehen:

            for (let i = 0; i <x.length; i++) {
             
                titel = x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue + "<br />";
                publikation = "";
                try {
                  publication =  x[i].getElementsByTagName("publication")[0].childNodes[0].nodeValue;
                }
                catch {
                    publikation = "0";   
                }
            
            W 1 Reply Last reply Reply Quote 0
            • W
              Waytlion @Asgothian last edited by

              @asgothian
              Vielen Dank,
              hab es über try and catch gelöst, anders hat es leider nicht funktioniert 🙂

              Asgothian 1 Reply Last reply Reply Quote 0
              • Asgothian
                Asgothian Developer @Waytlion last edited by

                @waytlion

                Solange es geht ist es ja gut. Bei so tief verschachtelten Strukturen ist der try/catch Ansatz auch nicht unbedingt falsch. Ansonsten muss halt auf jeder Ebene geschaut werden ob das Objekt auch dem entspricht was man erwartet.

                A.

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

                Support us

                ioBroker
                Community Adapters
                Donate

                677
                Online

                31.9k
                Users

                80.1k
                Topics

                1.3m
                Posts

                2
                6
                162
                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