Domanda

Javascript:

var req=xmlDoc.responseXML.selectSingleNode("//title");
alert(req.text);

come previsto, restituisce il testo del primo nodo "titolo".

ma questo

var req=xmlDoc.responseXML.selectNodes("//title");
alert(req.text);

restituisce "undefined". Di seguito:

var req=xmlDoc.responseXML.selectNodes("//title").length;
alert(req);

restituisce "2." Io non capisco. Forse quando ho selectNodes non sta ottenendo il nodo di testo all'interno del titolo. Questa è la mia ipotesi per ora ... Ecco il 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>

grazie

È stato utile?

Soluzione

selectNodes restituisce un array piuttosto che un singolo nodo (da qui la denominazione plurale del metodo).

È possibile utilizzare un indicizzatore per ottenere i singoli nodi:

var req=xmlDoc.responseXML.selectNodes("//title");
for (var i=0;i<req.length;i++) {
   alert(req[i].text);
}

Altri suggerimenti

selectNodes restituisce un array.

Di conseguenza, quando si scrive var req=xmlDoc.responseXML.selectNodes("//title"), la variabile req ha conseguito un array di elementi.
Dal momento che gli array non hanno una proprietà text, che stai ricevendo undefined.

Al contrario, si può writereq[0].text per ottenere il testo del primo elemento della matrice.

Come suggerisce il nome del metodo, selectNodes restituisce un insieme (array). Hai bisogno di un ciclo su di loro. Oppure, se siete sicuri della struttura, afferrare il primo elemento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top