selectSingleNode工作但不是selectNodes

时间:2010-06-25 15:09:54

标签: javascript internet-explorer xmlhttprequest selectsinglenode selectnodes

使用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>

感谢

3 个答案:

答案 0 :(得分:5)

selectNodes返回一个数组。

因此,当您编写var req=xmlDoc.responseXML.selectNodes("//title")时,req变量会包含数组元素。
由于数组没有text属性,因此您获得undefined

相反,您可以编写req[0].text来获取数组中第一个元素的文本。

答案 1 :(得分:4)

selectNodes返回一个数组而不是一个节点(因此该方法的复数命名)。

您可以使用索引器获取各个节点:

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

答案 2 :(得分:2)

正如方法名称所示,selectNodes返回一个集合(数组)。你需要循环它们。或者,如果您确定结构,请抓住第一个元素。