0

Javascript コードで xml 応答を解析しているときに問題が発生しました (extjs 4 を使用していますが、ここでは問題ではないと思います)。

xml 応答は次のようなものです。

<response>
  <id>9</id>
  <time>2012-05-24 14:22:44</time>
  <name>user</name>
  <message>message</message>
  <p2pchat>
    <requestor>user1</requestor>
    <requested>user2</requested>
    <time>2012-05-26 12:13:28</time>
    <message>msg</message>
  </p2pchat>
</response>

ID、時間、名前、メッセージなどの第 1 レベルの要素を解析するのに問題はありませんが、私の js コードはより深い要素にアクセスできません。コードは次のとおりです。

var response = xmlHttpGetMessages.responseText;
response = xmlHttpGetMessages.responseXML.documentElement;
idArray = response.getElementsByTagName("id");
nameArray = response.getElementsByTagName("name");
timeArray = response.getElementsByTagName("time");
messageArray = response.getElementsByTagName("message");

requestorsArray = response.getElementsByTagName("p2pchat/requestor");
requestedsArray = response.getElementsByTagName("p2pchat/requested");
timep2pArray = response.getElementsByTagName("p2pchat/time");
messagep2pArray = response.getElementsByTagName("p2pchat/message");  

このコードの実行後、最後の 4 つの配列の長さは常に 0 になり、xml 応答からは何もフェッチされません。XMLツリーの内部要素を解析する方法をGoogleで検索しましたが、10の異なるページでほぼ10の異なるシンタックスを見つけましたが、どれもうまくいかないようでした..何か考えはありますか?

4

1 に答える 1

0

Googleで数時間のデータマイニングで解決策が得られました。ここに投稿します。誰かが同じ問題に遭遇し、この投稿に私が使用した解決策があることがわかった場合:

var xmlp2pchat = response.getElementsByTagName("p2pchat");

var requestorsArray = Array();
var requestedsArray = Array();
var timep2pArray = Array();
var messagep2pArray = Array();

for(var i=0;i<xmlp2pchat.length;i++) {
  var x = xmlp2pchat[i].getElementsByTagName("requestor");
  var y = xmlp2pchat[i].getElementsByTagName("requested");
  var z = xmlp2pchat[i].getElementsByTagName("time");
  var t = xmlp2pchat[i].getElementsByTagName("message");

  for(var j=0;j<x.length;j++) {
    requestorsArray.push(x[j]);
    requestedsArray.push(y[j]);
    timep2pArray.push(z[j]);
    messagep2pArray.push(t[j]);
  }

}

そして、私はそれを使用します

 var whatever = requestorsArray[i].firstChild.data
于 2012-05-26T13:01:40.230 に答える