Anzahl der childNodes beim Parsen xml-Datei

Hallo,

mit einem Ajax-Request wird eine xml-datei geladen.
Diese ist wie folgt aufgebaut:

<?xml version="1.0" encoding="utf-8"?>1Title of 1Author of 1

… und weitere 19 -tags mit je 3 Childs

Nach dem erfolgreichen Request steht responseXML in XMLdaten.

Merkwürdigerweise gibt XMLdaten.documentElement.childNodes.length die Anzahl von 41 aus.

Jeder 2. childNode von XMLdaten.documentElement ist undefined!!
Der 1. ist undefined, der 2. o.k., der 3. undefined, der 4. o.k, usw.

Ebenso wird bei einem vorhanden childNode die Anzahl dessen childNodes mit 7 angegeben.

Große Frage:
warum 41 und nicht wie erwartet 20
und warum 7 und nicht wie erwartet 3

h♥rzlichen Gruß
Nitya

Große Frage:
warum 41 und nicht wie erwartet 20
und warum 7 und nicht wie erwartet 3

Hallo,

ich nehme an, dass die Zeilenvorschübe und Leerzeichen für die Einrückung deine überzähligen Knoten darstellen, in denen natürlich keine Elemente enthalten sind. Guck’ mal nach einem Parameter, wie sich das abstellen lässt.

Grüße, guidot

Hallo guidot,

ich nehme an, dass die Zeilenvorschübe und Leerzeichen für

die white-spaces sind es !!
(habe mal die ersten tags in eine Zeile geschrieben)
Muss man erstmal drauf kommen … Danke !!

Über „Parameter“, die das vermeiden, habe ich nichts gefunden.

Zuerst dachte ich, den Request erst mit responseText durchzuführen, mit replace zu „bereinigen“ und dann aus dem Text ein XML-Object zu machen.
Aber da es auch blancs in den Values der „regulären“ Knoten gibt, wäre es nur mit recht viel Aufwand zu machen.

Durch Überprüfung mit hasChildNodes() geht es. Aber kommt mir umständlich vor, das für jede Ebene durchzuführen.

Hast Du da vielleicht noch eine Idee?

Nochmal Danke.

h♥rzlichen Gruß
Nitya

die white-spaces sind es !!
(habe mal die ersten tags in eine Zeile geschrieben)
Muss man erstmal drauf kommen … Danke !!

Über „Parameter“, die das vermeiden, habe ich nichts gefunden.

Hast Du da vielleicht noch eine Idee?

Hallo,

ja, zumindest das erste schlaue Buch, in das ich geguckt habe (Ajax gepackt). Dort wird empfohlen, innerhalb der Laufschleife, die die child-nodes verarbeitet, eine Abfrage zu machen:

if (child.nodeType == 1) {
... echtes Element verarbeiten ...
}

wobei 1 einem echten Elementknoten entspricht. Knotentyp 3 wäre ein Textknoten und genau in so einen wird ein Zeilenvorschub verpackt.

Grüße, guidot

Hallo,

(child.nodeType == 1)

Hast schon recht.
Nehme hasChildNode() damit leere Elemente auch gleich gefiltern werden.

Die eigentlich XML-Datei ist nicht so „gleichmäßig“, wie ich geschrieben habe - sollte nur die Frage zur Nodeanzahl veranschaulichen.

h♥rzlichen Gruß
Nitya