ajaxでXMLを読み込む2

前回までのあらすじ

外部のサーバに変更を加えず、PHPも使わずに、ajaxでクロスドメインのXMLを読みこみたい。

jquery.xdomainajax.jsを使うことで、外部のHTMLを読み込んでパースができた。

HTMLだけでなく GitHub:jquery.xdomainajax.js Support XML responsesのスクリプトを足すことでXMLも読めるようになる。responseTextでタグを抜いたプレーンなテキストは受け取れるが、responseXMLでは[object Object]になってしまい、XMLを受け取れない。タグ入りのXMLを取り出すにはどうしたらいいか。

オブジェクトからxmlを取り出す

[object Object]になってしまうということは、オブジェクトになっているということ。どういうことだろうとjquery.xdomainajax.jsのソースを見ていると

_success.call(this, { responseText: (data.results[0] || '') // YQL screws with <script>s // Get rid of them .replace(/<script[^>]+?\/>|<script(.|\s)*?\/script>/gi, '') }, 'success');

オブジェクトのresponseTextに入れられているな?というわけで、そこから取り出してみた。

$.ajax({ url: 'http://natalie.mu/comic/feed/news', type: "GET", success: function(res) { var xmlText = res["responseText"]; console.log(xmlText) }, });

xmlのタグ込みの文字列が入れられているようだ。これをXMLに変換したい。

文字列をxmlに

文字列をXMLに変換するのはとても簡単。

$.parseXML() | Qrefy - jQuery日本語リファレンス 文字列をXMLドキュメントにパースします。

var xmlText = res["responseText"]; var xmlDoc = $.parseXML(xmlText);

これだけで文字列がXMLに!!!!

あとは以下を参考にパースしたらよろしい。

ajaxによるxmlの読み込み : Web.fla

試したのが以下

サンプル

  • 投稿日:
  • カテゴリ: