Вопрос

JavaScript:

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

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

но это

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

Возвращает "undefined". Последующий:

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>

Спасибо

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top