selectSingleNode работает, но не selectNodes - PullRequest
2 голосов
/ 25 июня 2010

Javascript:

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

, как и ожидалось, возвращает текст первого узла "title".

, но этот

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

возвращает "неопределенное".Следующее:

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

возвращает «2».Я не понимаюМожет быть, когда я выбираю узлы, он не получает текстовый узел внутри заголовка.Это мое предположение на данный момент ... вот 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>

спасибо

Ответы [ 3 ]

5 голосов
/ 25 июня 2010

selectNodes возвращает массив.

Следовательно, когда вы пишете var req=xmlDoc.responseXML.selectNodes("//title"), переменная req содержит массив элементов.
Поскольку у массивов нет свойства text, вы получаете undefined.

Вместо этого вы можете написать req[0].text, чтобы получить текст первого элемента в массиве.

4 голосов
/ 25 июня 2010

selectNodes возвращает массив, а не один узел (отсюда и множественное именование метода).

Вы можете использовать индексатор для получения отдельных узлов:

var req=xmlDoc.responseXML.selectNodes("//title");
for (var i=0;i<req.length;i++) {
   alert(req[i].text);
}
2 голосов
/ 25 июня 2010

Как следует из названия метода, selectNodes возвращает коллекцию (массив).Вы должны зациклить их.Или, если вы уверены в структуре, возьмите первый элемент.

...