2

私はAjaxが初めてです。

このドキュメントを解析しようとしています。

readystatechange まで到達し、XML を取得しています。しかし、childNodes とその値に関しては混乱します。

コードの一部を次に示します。その最初の値を警告しようとすると、空白になります。

var clientList = request.responseXML.getElementsByTagName('client');
for (var i=0;i<clientList.length;i++) {
    var client=clientList[i];
    var clientName = client.childNodes[0].nodeValue;
    alert(clientName)

私が理解している限り、XML ドキュメントに基づいて、各「クライアント」タグには次の ChildNodes があります。

[0] : clientName, 
[1] : clientStreetAddress, 
[2] : clientCity
[n] : ...and so on... 

それで、私はここで何が欠けていますか?明らかに、私は自分の事実を正確に把握していません。助けてください!

4

2 に答える 2

0

タグの順序に基づくのではなく、タグの名前を使用してXMLからデータを読み取る必要があります。ドキュメントが解析されると、要素間の空白のテキストノードが含まれる場合があります。これにより、必要なデータを含む要素のインデックスがオフセットされます。

var clientName = client.childNodes.selectSingleNode('./clientName').nodeValue;
于 2011-07-09T19:24:40.233 に答える
0

代わりに XPATH を使用するよう提案してくれた TeslaNick に感謝します。答えは次のとおりです。

var clientDoc = request.responseXML;
var clientName = clientDoc.evaluate("data/client[1]/clientName", clientDoc, null, XPathResult.STRING_TYPE, null).stringValue

もちろん、これは IE ブラウザーを処理するように変更する必要があり、パスはクライアントをループするように設定する必要があると思います。ただし、実際の最も簡単な答えは上記です。

助けてくれたGuffaにも感謝します!

于 2011-07-10T14:27:31.100 に答える