Ich versuche, eine einfache XML-Datei zu lesen, aber auf der einen Seite immer Null mit nodeValue und auf der anderen Seite bemerkte ein seltsames Verhalten auf den Kind-Knoten.xmlHttpRequest nodeValue immer null
Zuerst wird das seltsame Verhalten: Das ist mein xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<productList>
<product>
<productname>Keilspanner</productname>
<artikelnummer>m12.123</artikelnummer>
<productid>2001</productid>
<objname>keilspanner</objname>
<length>6</length>
<width>5</width>
<height>2.5</height>
</product>
<product>
<productname>feste Backe</productname>
<artikelnummer>m12.456</artikelnummer>
<productid>3001</productid>
<objname>festeBacke</objname>
<length>6</length>
<width>4.4</width>
<height>2.5</height>
</product>
<product>
<productname>ClampRail</productname>
<artikelnummer>123</artikelnummer>
<productid>1001</productid>
<objname>clampRail</objname>
<length>40</length>
<width>5</width>
<height>5</height>
</product>
<product/>
</productList>
Wenn ich alle Knoten Kind von "Produkt" auszudrucken wie folgt aus:
for(i=0; i<=14; i++){
console.log(xmlDoc.getElementsByTagName("product")[0].childNodes[i]);
};
bekomme ich diese:
loadXML.js:22 #text
loadXML.js:22 <productname>Keilspanner</productname>
loadXML.js:22 #text
loadXML.js:22 <artikelnummer>m12.123</artikelnummer>
loadXML.js:22 #text
loadXML.js:22 <productid>2001</productid>
loadXML.js:22 #text
loadXML.js:22 <objname>keilspanner</objname>
loadXML.js:22 #text
loadXML.js:22 <length>6</length>
loadXML.js:22 #text
loadXML.js:22 <width>5</width>
loadXML.js:22 #text
loadXML.js:22 <height>2.5</height>
loadXML.js:22 #text
Jeder zweite Wert ist eigentlich ein Kind meiner XML-Datei.
Zweite Ausgabe: Wenn ich nennen:
xmlDoc.getElementsByTagName("product")[0].childNodes[1].nodeValue;
es immer null zurück.
Hier ist meine komplette js:
function readXml() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
myFunction(xhttp);
}
};
xhttp.open("GET", "xml/products.xml", true);
xhttp.send();
}
function myFunction(xml) {
var xmlDoc = xml.responseXML;
for(i=0; i<=14; i++){
console.log(xmlDoc.getElementsByTagName("product")[0].childNodes[i]);
};
console.log(xmlDoc.getElementsByTagName("product")[0].childNodes[1].nodeValue);
}
Hoffe ihr könnt mir helfen, ich bin neu in xml und ich bin gleich am Anfang Fehler: D
Danke für die schnelle Antwort. Sie meinen also, der weiße Bereich in meiner XML-Datei wird tatsächlich durch eine schlechte Syntax verursacht? Oder ist das üblich und ich muss nur unebene Kinderzahlen verwenden, um meine Werte zu erhalten. – tinytree
Es gibt nichts Schlechtes an der Syntax. Wenn Sie nur Elementknoten erhalten möchten, prüfen Sie den Knotentyp in der Schleife und 'continue', wenn es kein Element ist. – Quentin
vielen dank, das sollte den Trick tun – tinytree