電子書籍の厳選無料作品が豊富!

Ajaxでプログラミングをしております。

サーバに問い合わせた答えをXMLで返しております。
Ajaxで問い合わせて、
alert(req.responseText);
とすれば、XMLが画面に表示されて、答えが返っていることを確認できています。
====XMLデータは以下===
<?xml version="1.0" encoding="utf-8" ?>
- <results>
- <result>
<x>139.1748046875</x>
<y>37.26530995561875</y>
<kiji>トラックバックテスト</kiji>
<url>http://blog.livedoor.jp/***/archives/50669333.ht …
<contents>test trackbackAAAAAAAAAAAAAAAAAAAA</contents>
<btitle>必勝!株式投資!</btitle>
<date>10.24.06</date>
</result>
- <result>
<x>139.1748046875</x>
<y>37.26530995561875</y>
<kiji>下げシグナル</kiji>
<url>http://blog.livedoor.jp/***/archives/50533401.ht …
<contents>カブログへの清き一票よろしくお願いします
</contents>
<btitle>必勝!株式投資!</btitle>
<date>2006.10.24</date>
</result>
</results>
====ここまで=====

XMLの<result>タグでブロックごとに分解し、その分解されたブロックから
<X>の値、<contents>の値を取ろうとしております。

ためしに、
var result = req.responseXML.getElementsByTagName('result');
alert(result.length);
とやって、<result>タグで2ブロックにきれているか、確かめたのですが、
0と返ってきます。

何かやり方がわるいのでしょうか?

サーバプログラム、クライアントプログラムとも、UTF-8でやってます。
IEは6.0です。

よろしくお願いします。

A 回答 (3件)

以下のソースで試してください。


保存する時は必ず文字コードをutf-8で指定して保存するように。

xmlは書式に厳格です。余分なスペースなんかも気にしてください。
良くわからない場合は、ブラウザーで開くとパースできます。
ブラウザーで開ければだいたい大丈夫なんじゃないでしょうか・・

<?xml version="1.0" encoding="utf-8"?>
<results>
<result>
<x>139.1748046875</x>
<y>37.26530995561875</y>
<kiji>トラックバックテスト</kiji>
<url>?http://blog.livedoor.jp/***/archives/50669333.ht …
<contents>test trackbackAAAAAAAAAAAAAAAAAAAA</contents>
<btitle>必勝!株式投資!</btitle>
<date>10.24.06</date>
</result>
<result>
<x>139.1748046875</x>
<y>37.26530995561875</y>
<kiji>下げシグナル</kiji>
<url>http://blog.livedoor.jp/***/archives/50533401.ht …
<contents>カブログへの清き一票よろしくお願いします</contents>
<btitle>必勝!株式投資!</btitle>
<date>2006.10.24</date>
</result>
</results>
    • good
    • 0
この回答へのお礼

ありがとうございます。IEで受信したXMLは開けなかったので、文字コードに問題がありそうです。

でもJSONでやったら、さっくり出来てしまったので、JSONで作っております。
ご回答ありがとうございました。

ちなみに出来たサイトはこちらです。
■世界中の釣りブログのトラックバックを地図に貼り付け!
World Fishing Reports
http://wfr.from.tv/
です。

お礼日時:2006/11/18 20:00

リクエストの解答は来ているようなので、いっそXMLパーサーに頼らないで自力で解析しちゃったらいかがです?(笑



var X=req.responseText.match(/<x>[^<]+<\/x>/g);
var R=req.responseText.match(/<contents>[^<]+<\/contents>/g);
たったこれだけで、配列の X と R へ必要な値が取れちゃうと思うのですが。

ついでに、リクエストの側もXMLHttpReqestだけに絞り込んでしまえば、多分30行程度で必要な関数は完成してしまうのではないかと。
    • good
    • 0
この回答へのお礼

PEARで楽したかったので・・・

でも、これだけでできちゃうんですよね・・・

ありがとうございました。

お礼日時:2006/11/18 20:02

alert(req.responseXML);


には何が入ってますか?

> - <results>
XMLのソースに - が入っているのでしょうか?
もしそうならXMLとしての文法を確認してみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

-は入っておりません。
ただ、IEで開くと、XMLが解析できないと出てしまいます・・・
文字コードを変えたら上手く表示されたり・・・
PEARを使って、DBの情報をそのままXMLに置き換えてるんですけどね・・

お礼日時:2006/11/18 19:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!