2

Javascript:

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

予想どおり、最初の「タイトル」ノードのテキストを返します。

でも、これ

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

「未定義」を返します。以下:

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

「2」を返します。理解できません。たぶん、SelectNodesを選択すると、タイトル内にテキストノードが表示されません。それは今のところ私の推測です...ここに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>

ありがとう

4

3 に答える 3

5

selectNodes配列を返します。

したがって、と書くvar req=xmlDoc.responseXML.selectNodes("//title")と、req変数は要素の配列を保持します。配列にはプロパティ
がないため、を取得しています。textundefined

代わりにreq[0].text、配列の最初の要素のテキストを取得するように書くことができます。

于 2010-06-25T15:11:00.097 に答える
4

selectNodesは、単一ノードではなく配列を返します(したがって、メソッドの複数形の名前が付けられます)。

インデクサーを使用して、個々のノードを取得できます。

var req=xmlDoc.responseXML.selectNodes("//title");
for (var i=0;i<req.length;i++) {
   alert(req[i].text);
}
于 2010-06-25T15:14:13.547 に答える
2

メソッド名が示すようにselectNodes、コレクション(配列)を返します。それらをループする必要があります。または、構造がわかっている場合は、最初の要素を取得します。

于 2010-06-25T15:13:33.373 に答える