2

Ajax.Requestinから XML が戻ってきましたAjax.Response.responseXML。私の XML には、実際にドキュメントに追加したい XHTML タグが含まれています。

responseXMLただし、 から現在のドキュメントにノードを追加する際に問題があります。これは、DOM ノードではなく XML ノードであるためだと思われます。

responseXMLin をラップして$()もノードの拡張バージョンが返されるようには見えません。

Prototype は を利用する方法を提供していますか?responseXMLそうでない場合、応答を解析して使用するクロスブラウザーの方法はありますか?

4

2 に答える 2

2

私は Christian の回答を「正しい」回答として受け入れましたが、私の同僚がPrototype を使用して XML 応答を解析する方法を教えてくれました。

を使用するのではなくresponseXML、単純に を作成しElementてから を使用update()しますresponseText。その後、同様のメソッドを使用select()してノードをトラバースできます。

于 2010-03-02T06:47:45.807 に答える
1

XML をネイティブに解析する方法を持たないプロトタイプはありません。$(xml) で xml を拡張してから、.next()、.select() などで DOM をたどることもできません。

これは、スペル チェックの結果から一部の XML を手動で解析するプロジェクトで最近行ったことの例です。始める必要があります。

parseResults: function(results) {
var c = results.responseXML.getElementsByTagName('c');
var corrections = $A(c);
if(!corrections.size()){
  this.link.insert({ after: '<span class="spellCheckNoErrors">No spelling errors</span>' });
  (function(){ this.link.next().remove(); }.bind(this)).delay(1);
  return null;
}
this.res = $A();
corrections.each(function(node){
  sugg = node.childNodes[0].nodeValue;
  offset = node.attributes[0].nodeValue;
  len = node.attributes[1].nodeValue;
        this.res.push(
    $H({
      word: this.text.substr(offset, len),
      suggestions: sugg.split(/\s/)
          })
  );
},this);
this.overlay();
},
于 2010-02-25T18:40:52.577 に答える