NEWS
XML Parser Error: undefined
-
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.
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 -
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.
-
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 -
@waytlion sagte in XML Parser Error: undefined:
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 undefinedVersuch 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"; }
-
@asgothian
Vielen Dank,
hab es über try and catch gelöst, anders hat es leider nicht funktioniert -
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.