selectSingleNode funktioniert aber nicht Select
-
30-09-2019 - |
Frage
Javascript:
var req=xmlDoc.responseXML.selectSingleNode("//title");
alert(req.text);
wie erwartet, gibt den Text des ersten "Titel" Knoten.
aber
var req=xmlDoc.responseXML.selectNodes("//title");
alert(req.text);
returns "nicht definiert." In dem folgenden:
var req=xmlDoc.responseXML.selectNodes("//title").length;
alert(req);
returns "2." Ich verstehe es nicht. Vielleicht, wenn ich es nicht Select immer den Textknoten innerhalb des Titels. Das ist meine Vermutung jetzt ... hier ist die xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE catalog SYSTEM "catalog.dtd">
<catalog>
<decal>
<company>Victor</company>
<title>Wood Horn Blue Background</title>
<image>
<url>victor01.jpg</url>
<width>60</width>
<height>60</height>
<name>Wood Horn Blue Background</name>
<link></link>
</image>
<price>$15.00</price>
<instock>In Stock</instock>
<notes>no extra info</notes>
</decal>
<decal>
<company>Victor</company>
<title>Wood Horn without Black Ring</title>
<image>
<url>victor02.jpg</url>
<width>60</width>
<height>60</height>
<name>Wood Horn Without Black Ring</name>
<link></link>
</image>
<price>$15.00</price>
<instock>In Stock</instock>
<notes>no extra info</notes>
</decal>
</catalog>
Dank
Lösung
Select ein Array zurückgibt, anstatt einen einzelnen Knoten (daher auch der Plural Namensgebung des Verfahrens).
Sie können einen Indexer verwenden, um die einzelnen Knoten zu bekommen:
var req=xmlDoc.responseXML.selectNodes("//title");
for (var i=0;i<req.length;i++) {
alert(req[i].text);
}
Andere Tipps
selectNodes
gibt einen Array.
Wenn Sie also var req=xmlDoc.responseXML.selectNodes("//title")
schreiben, die req
Variable enthält eine array von Elementen.
Da Arrays keine text
Eigenschaft haben, sind Sie undefined
bekommen.
Sie können stattdessen writereq[0].text
den Text des ersten Elements in der Anordnung zu erhalten.
Wie der Name schon sagt Verfahren kehrt selectNodes
eine Sammlung (Array). Sie müssen über sie Schleife. Oder wenn Sie sicher, dass die Struktur sind, um das erste Element greifen.