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

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top