• 締切済み

ActiveXObjectで取得したXMLの解析処理ができない

Ajaxの勉強をしているのですが困っています。 ActiveXObjectで取得したXMLの解析処理ができないのです。 1.JavaScriptで新たにActiveXObjectのオブジェクトを作成 (例)var obj = ActiveXObject(Msxml2.XMLHTTP); 2.上記オブジェクトに対しopen(),send()を行う。 (例)obj.open(callback,url,false); 3.サーバーにてリクエスト受信後、JSP上に記述したXMLを送信。 4.上記オブジェクトに対しresponseXMLを行う。 (例)var doc = obj.responseXML; 5.XMLの要素を取得 (例)doc.getElementsByTagName("name"); 4の結果何らかのオブジェクトは取れているようなのです(alertで表示してみると"[Object]"と表示される。)が、実際に5でXML中の要素を取ろうとすると何も取得できません。一方4をobj.responseText;とすると、(alertで表示してみると文字化けしていますがXMLの)内容が取得できます。 なぜレスポンスをXMLにして取得した場合、情報を取得できないのでしょうか?ご教授いただけませんでしょうか? よろしくお願いいたします。

みんなの回答

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>javaScript実行後のitem.lengthは0で、 同じXMLをうちのサーバーにアップして、 同様に試してみましたが、 item.length=2 で問題なく取得できました。 表面上同じように見える doc.getElementsByTagName("item") と <item>の "item"が違うのかなと思います。 文字コード自体は、マルチバイト文字が使われていないので、なぜ違うということになるのかよくわかりません。 ちなみに、 alert(doc.xml); でXMLを表示してみたらXML全体が表示されますか? できたら、コードを補足できますか?

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

getElementsByTagName が返すのは、ノードリストですが、ちゃんとノードリストとして処理していますか? あと、 XMLの方で <?xml versin="1.0" encoding="UTF-8" ?> のようにXML宣言がちゃんと書かれていますか? <?xml versin="1.0" ?> の場合うまく処理できない場合があるようです。 (宣言自体が省略されている場合は、大丈夫、ただしUTF-8)

cos_theta
質問者

補足

BLUEPIXYさん、ご返答ありがとうございます。 javaScript中では var item = doc.getElementsByTagName("item") JSP上の送信XMLは <?xml version="1.0" encoding="UTF-8" ?> <List> <item> <name>name1</name> <value>value1</value> </item> <item> <name>name2</name> <value>value2</value> </item> </List> と記述しています。 javaScript実行後のitem.lengthは0で、 念のため宣言をはずして試行してみましたが駄目でした。 後はXMl解析のコーディングミスなどが考えられますが、 上記javaScript実行直前ではobj.responseTextでXMLが取得できます。 何か他に問題はあるでしょうか?