• ベストアンサー

javascriptにてXMLの読み込み

yahooの日本語係り受け解析を使って解析を行おうと思っています。 <ResultSet xsi:schemaLocation="urn:yahoo:jp:jlp:DAServicehttp://jlp.yahooapis.jp/DAService/V1/parseResponse.xsd">  -<Result>   -<ChunkList>    -<Chunk>     <Id>0</Id>     <Dependency>1</Dependency>     -<MorphemList>      -<Morphem>       <Surface>こんな</Surface>       <Reading>こんな</Reading>       <Baseform>こんな</Baseform>       <POS>形容動詞</POS>       <Feature>形容動詞,形動特殊,*,こんな,こんな,こんな</Feature>      </Morphem>     </MorphemList>    </Chunk>    -<Chunk>     <Id>1</Id>     <Dependency>2</Dependency>     -<MorphemList>      -<Morphem>       <Surface>私</Surface>       <Reading>わたし</Reading>            ・            ・            ・ リクエストを送るとこのような形で返ってくるのですが、IdとDependencyの値は取れるのにSurfaceの値が取れません。 JKL.ParseXMLを使っています。 処理部分↓ var http = new JKL.ParseXML("http://jlp.yahooapis.jp/…  //リクエスト&オブジェクト var data = http.parse(); //解析 var kai = data["ResultSet"]["Result"]["ChunkList"]["Chunk"]; //この後 kai["Id"]で値は取れます。 var kai2 = data["ResultSet"]["Result"]["ChunkList"]["Chunk"]["MorphemList"]["Morphem"];  //ここでエラーが出ます。 MorphemがNullまたはオブジェクトではないと表示されるんですが… ブラウザはIEです。 どなたかご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

JKL.ParseXMLをよく使っている者です。 下のように、<Morphem>が一つの時と、複数の時をハンドリング する必要があるのでは? if ((typeof data.ResultSet.Result.ChunkList.Chunk.MorphemList.Morphem[0]) == "object"){ for(i=0;i<data.ResultSet.Result.ChunkList.Chunk.MorphemList.Morphem.length;i++){ Morphem[i] = data.ResultSet.Result.ChunkList.Chunk.MorphemList.Morphem[i] } }else{ Morphem[0] = data.ResultSet.Result.ChunkList.Chunk.MorphemList.Morphem; } for(i=0;i<Morphem.length;i++){ Surface[i] = Morphem[i].Surface; Reading[i] = Morphem[i].Reading; } あるいは、JKL.ParseXMLのサブクラス http.setOutputArrayElements( "TAG" ) http.setOutputArrayNever() を使ってみては、いかがです。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

んー手元では再現できない... このライブラリ殆ど使ったことないし。 自分の環境(Minefield/Firefox 3.2a1pre)だと 次のような挙動をしているように思う(readmeとか読んでません) 1.インデクサによって要素名を指定する要素が一つしかない時, 数字を指定することは出来ない。 <a> <b></b> <!-- data["a"]["b"]はObject。data["a"][0]["b"]はundefined --> </a> 2.要素が二つ以上あるときは数字でノードを特定しないといけない。XPathのように複数のノードがマッチする、というようなことはないようだ。 <a> <!-- data["a"]["b"]["c"]やdata["a"]["b"]["c"][0]はundefined。data["a"]["b"][0]["c"]は"あ" --> <b><c>あ</c></b> <b><c>い</c></b> </a> お互い違うXMLデータで話していると思うので この挙動が一致しているかどうか返答もらってもいいかな?

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

http://developer.yahoo.co.jp/webapi/jlp/da/v1/parse.html 良く見ると Morphem【e】List になってない? #未検証だけど

navigater5
質問者

お礼

まさかと思ってやってみましたがやっぱりだめでした。 リクエストページではちゃんと MorphemList になっているので おそらく記述ミスかと。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • javascriptで困っています。教えてください

    読み込まれたら、watchPositionで位置情報を取得し続け、ボタンを押したタイミングでmap_draw関数を実行して、地図を表示させようと思っています。そのときseidoが5以下のときだけ地図を表示させたいので、seidoが5より大きいときは、map_draw関数をもう一度呼び出すループを考えました。しかし、watchPositionではきちんとseido = position.coords.accuracy;の値がとれており、5以下になっているのですが、map_draw関数のなかでseidoの変数をうまく取得できません。map_draw関数では最初の一回目だけ取得して、後は値が変わりません。ループの部分に問題があるのでしょうか?教えていただければと思い投稿しました。よろしくお願いします。 <html> <head> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&language=ja&v=3.6"></script> <script type="text/javascript" charset="utf-8"> var ido; var keido ; var seido ; var map; var btn; window.onload = function(){ btn = document.getElementById("btn"); btn.addEventListener('click', map_draw, false); navigator.geolocation.watchPosition(update,poserror,{maximumAge: 30000,enableHighAccuracy:1}); } function update(position){ ido = position.coords.latitude; keido = position.coords.longitude; seido = position.coords.accuracy;            var htmlTxt = "Lat." + ido + "Lng" + keido+ "Acc" + seido; htmlTxt += "<br>"+(new Date()); var pos = document.getElementById("pos"); pos.innerHTML = htmlTxt; } function poserror(position){ alert("error");         } function map_draw(){ if(seido>5){ map_draw(); }else{  var lat = ido;  var lng = keido;  var Latlng = new google.maps.LatLng( lat , lng ); var myOptions = {  zoom: 17,  center: Latlng,  mapTypeId: google.maps.MapTypeId.ROADMAP   }; map = new google.maps.Map(document.getElementById("map_canvas"),myOptions); } } </script> </head> <body> <p id="pos">情報</p> <div id="map_canvas" style="width:480px; height:640px;">地図</div> <button id="btn">地図を描く</button> </body>

  • キーワードランキングAPI(yahoo!)について

    API初心者です。yahoo!ショッピングが公開しているキーワードランキングAPIについて質問させてください yahoo!ショッピングでネットショップを運営しているのですが、seo対策の一環で旬なキーワードの動向はつねに把握したいと考えています。 こちらのAPIを使えばYahoo!ショッピングで検索されている人気の検索キーワード情報を取得できるという事で使い方を把握しようと自分なりに奮闘しました↓ http://developer.yahoo.co.jp/webapi/shopping/shopping/v1/queryranking.html なんとか頑張ってキーワードの順位を取得する事には成功したのですが、データの集計開始日と集計終了日を指定する方法がどうしても分かりません。以下のソースにどのような記述を付け足せば任意のデータ集計期間の情報を取得できるようになるのでしょうか? <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>爆速JSONP</title> </head> <body> <script src="http://i.yimg.jp/images/yjdn/js/bakusoku-jsonp-v1.js" data-url="http://shopping.yahooapis.jp/ShoppingWebService/V1/json/queryRanking" data-p-appid="アプリケーションID" data-p-category_id="検索キーワードの動向を知りたいカテゴリ" > 1位 {{#ResultSet}} {{#0}} {{#Result}} {{#1}} {{Query}} {{/1}} {{/Result}} {{/0}} {{/ResultSet}} <br> 2位 {{#ResultSet}} {{#0}} {{#Result}} {{#2}} {{Query}} {{/2}} {{/Result}} {{/0}} {{/ResultSet}} <br> 3位 {{#ResultSet}} {{#0}} {{#Result}} {{#3}} {{Query}} {{/3}} {{/Result}} {{/0}} {{/ResultSet}} <br> 4位 {{#ResultSet}} {{#0}} {{#Result}} {{#4}} {{Query}} {{/4}} {{/Result}} {{/0}} {{/ResultSet}} <br> 5位 {{#ResultSet}} {{#0}} {{#Result}} {{#5}} {{Query}} {{/5}} {{/Result}} {{/0}} {{/ResultSet}} </script> </body> </html> お詳しい方のアドバイスを拝借したいと思い質問させていただきました。よろしくお願い致します。 m(_ _)m

    • ベストアンサー
    • PHP
  • 【C# LINQ】 MAX値と一緒に・・・

    C#の初心者です。 以下のようなXML形式のデータがあります。 sample.txtという名前でCドライブ直下に保存してあります。 <resultset> <result> <title>123456789</title> <id>{4E55D112-0048-E011-BC1D-00155D026322}</id> <fullname>日本太郎</fullname> <fullnamekana>ニホンタロウ</fullnamekana> </result> <result> <title>123456789</title> <id>{4E55D112-0048-E011-BC1D-00155D026322}</id> <fullname>日本次郎</fullname> <fullnamekana>ニホンジロウ</fullnamekana>   <telephone>000-0000-1111</telephone> </result> <result> <title>123456789</title> <id>{4E55D112-0048-E011-BC1D-00155D026322}</id> <fullname>日本三郎</fullname> <fullnamekana>ニホンサブロウ</fullnamekana> </result> </resultset> 御覧の通り、resultset要素の中にresult要素が3つあります。 しかしながらresult要素の中にあるいくつかの要素の数は可変です。 この例では、1番目と3番目のresult要素の中の要素はまったく同じものですが、2番目のresultの中の要素はtelephoneという他のresult要素内にはない要素が存在します。 私はこの3つのresult要素の中から、最大の要素数を含むresult要素のみを取得したいと思っております。 この例では、2番目のresult要素が一番たくさん要素を含んでいるので(telephone分)、希望結果は以下のような感じです。 <result> <title>123456789</title> <id>{4E55D112-0048-E011-BC1D-00155D026322}</id> <fullname>日本次郎</fullname> <fullnamekana>ニホンジロウ</fullnamekana>   <telephone>000-0000-1111</telephone> </result> これを実現するため、私は以下のようなコードを考えました。 (頭が悪いので、かなり時間がかかりました・・・) StreamReader sample = new StreamReader(@"C:\sample.txt"); var XmlResult = XElement.Parse(sample.ReadToEnd()); var resultElementsMaxValue = ( from result in XmlResult.Elements("result") select new { resultElementsCounts = result.Elements().Count() } ).Max(c => c.resultElementsCounts); var modelResult = from result in XmlResult.Elements("result") where result.Elements().Count().Equals(resultElementsMaxValue) select result; しかしながら、この方法では、result内要素数の一度MAX値を取得した後、そのMAX値で再度、MAX値と同じ数の要素を含むresult要素を検索しております。 これは効率が悪い気がします。 MAX値を取得したときと同じタイミングで、そのresult要素を取得する方法はないのでしょうか。 ご教授、よろしくお願いします。

  • データベースからゼロが持って来れない

    Java初心者です。(SQLも初心者ですが…) Javaからデータベースの値をResultSetクラスのgetStringメソッドで 持って来ようと思ったのですが、持ってこれなかった。 調べたところ、値が0の項目だったのですが(これはidがゼロということで正しい) getStringで持ってきた値を見たところ、空白でした。 (空白なのかnullなのかはよく分かりません) 環境: OS:Windows7 DB:MySQL 5.1.57-community Community Server (GPL) 開発環境:Eclipse3.7 JDBCドライバ:mysql-connector-java-5.1.17-bin.jar SQL文: create table entry(id char(3),provider char(50),url char(255),blogid char(20),account char(20),password char(20)); ※blogidのところに0が入ります。 insert into entry values ('002','goo','http://blog.goo.ne.jp/xmlrpc.php','0','実際のアカウントIDが入る','実際のパスワードが入る'); Java: Connection users = SQL.getConnection(); Statement state = users.createStatement(); ResultSet result = state.executeQuery("select * from entry"); String id = result.getString("id"); String provider = result.getString("provider"); String url = result.getString("url"); String blogid = result.getString("blogid"); String account = result.getString("account"); String password = result.getString("password"); ※System.out.printlnで確認すると、何も入ってない。 そこで質問ですが、 1.値が0だけ持って来れない(0以外の数値なら持ってこれた)原因は何でしょうか? 2.また、対処方法としては何が考えられるのでしょうか? すみませんが、よろしくお願いします。

  • 初投稿です!javascriptで質問があります!

    こんにちは 最近jweb apiを勉強している学生です。 yahoo apiのキーフレーズ解析を用いて何か作ろうとしているのですが少し躓いてしまいました。 下記のプログラムはキーフレーズ解析のサンプルなのですが、このプログラムを一番スコアの高いものだけが表示されるようにしたいです。 どなたか知恵をお貸しいただけないでしょうか? よろしくお願いします。 //////index.html///////////////////////////// <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>キーフレーズ抽出(Yahoo! API使用)を試す - js do it</title> <meta name="Description" content="" /> <meta name="Keywords" content="" /> <link rel="stylesheet" type="text/css" media="screen,print" href="style.css" /> </head> <body> <!-- generated by: jsdo.it - http://jsdo.it/kjunichi/qpO3 --> <!-- Copyright kjunichi - http://jsdo.it/kjunichi --> <!-- Licensed under MIT License - http://www.opensource.org/licenses/mit-license.php --> <textarea id="targetText" rows="10" cols="45"></textarea> <input id="start" type="button" value="解析"> <div id="result"></div> <!-- Begin Yahoo! JAPAN Web Services Attribution Snippet --> <a href="http://developer.yahoo.co.jp/about"> <img src="http://i.yimg.jp/images/yjdn/yjdn_attbtn1_125_17.gif" title="Webサービス by Yahoo! JAPAN" alt="Web Services by Yahoo! JAPAN" width="125" height="17" border="0" style="margin:15px 15px 15px 15px"></a> <!-- End Yahoo! JAPAN Web Services Attribution Snippet --> <script type="text/javascript" src="http://jsdo.it/lib/jquery-1.6.2/js"></script> <script type="text/javascript" src="index.js"></script> </body> </html> //////index.js////////////////////////////////////////////////////////////////// var apiBaseUrl = "http://jlp.yahooapis.jp/KeyphraseService/V1/extract?callback=?"; var appid = "opensesami"; $(function(){ $("#start").click(function() { //alert($("#targetText").val()); $.getJSON(apiBaseUrl, { "appid" : appid, "sentence" : $("#targetText").val(), "output" : "json" }, function(data) { //alert(data); $.each(data, function(item,score){ //alert(item); $("#result").append(item + "," + score + "<br>"); }); } ); }); });

  • JavascriptとJavaの文字列引き渡し

    JSPを使ってJavaメソッドを呼び出しそのリターン値として文字列(String)を受け取るコードを動かしたのですが(ServerはTomcat8)、受け取り側のJavascriptでは、objectとなってしまい、toString()メソッドを通してもobjectのままになってしまいます(alert()関数で確認)。以下に関係コードの抜粋を "Member.java"のクラスメソッド部 public static ArrayList listup() throws Exception { ArrayList result = new ArrayList(); InitialContext initCon; DataSource ds; Connection con; Statement stmt; ResultSet rs; try { initCon = new InitialContext(); } catch(Exception e) { throw(new Exception("Can\"t get legal context.")); } ds = (DataSource)initCon.lookup("java:comp/env/jdbc/bar"); con = ds.getConnection(); stmt = con.createStatement (); rs = stmt.executeQuery ("SELECT * FROM member ORDER BY id;"); Member aMember; while(rs.next()) { aMember = new Member(); aMember.setId(rs.getInt("id")); aMember.setFirst_name(rs.getString("first_name")); aMember.setLast_name(rs.getString("last_name")); aMember.setBirthday(rs.getString("birthday")); result.add(aMember); } rs.close(); stmt.close(); con.close(); return result; } public static String tojson(ArrayList list) { String result = new String(); int i = 0; result = result + "{\"member\":["; while( i<list.size()) { Member aMember = (Member)list.get(i++); result = result + "{"; result = result + "\"id\" : \"" + aMember.getId() + "\"," ; result = result + "\"first_name\" : \"" + aMember.getFirst_name() + "\"," ; result = result + "\"last_name\" : \"" + aMember.getLast_name() + "\"," ; result = result + "\"birthday\" : \"" + aMember.getBirthday() + "\"}" ; } result = result + "]}"; return result; "index.jsp" <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.silane.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8)"> <title>メンバー一覧</title> <script type="text/javascript"> <!-- function showMember(list) { var obj = JSON.parse(list); // var obj = JSON.parse('{"member":[{"id" : "0","first_name" : "name","last_name" : "hogehoge","birthday" : "19841116"}]} '); alert("reach"); alert(obj.member.length); for( i=0; i<obj.member.length; i++) { document.write("<TR>"); document.write("<TD>"+obj.member[i].id+"</TD>"); document.write("<TD>"+obj.member[i].last_name+"</TD>"); document.write("<TD>"+obj.member[i].first_name+"</TD>"); document.write("</TR>"); } } // --> </script> </head> <body> <%=Member.tojson(Member.listup()) %> <TABLE> <TR><TH>ID</TH><TH>姓</TH><TH>名</TH></TR> <script type="text/javascript"> var list="'"+<%=Member.tojson(Member.listup()) %>+"'"; showMember(list); </script> </TABLE> </body> </html> 結果としてですが、alert("reach");まで行かないのJSON.parese()がうまく実行できていないのだと考えています。 どうすればよいでしょうか?ご教授をお願いいたします。

  • ビンゴマシン

    Java scriptとメモ帳使って作成したビンゴマシンを改良して、マシンのスタートとストップをEnterキーによる操作も出来るようにしたいと考えています。 しかしどうプログラミングしたらいいか分からず困っています。詳しい方ご教示よろしくお願い致します。 <style type="text/css"> body{ background-color: #fff; } #drum{ width: 450px; height: 450px; margin: 30px auto; position: relative; overflow: hidden; background-color: #fff; border: 2px solid #eee; border-color: #666 #eee #eee #666;} #drum span{ display: block; color: #000; font-size: 450px; height:450px; line-height: 450px; text-align: center; border-bottom: 2px groove #eee; position: relative;} div.result{ background-color: #fff; padding: 0.5em; position:relative; } #result{ width:100%; overflow:hidden; zoom:1; } #result span{ display:block; float:left; width:2.5em; text-align:center; color: #000; font-weight: bold;} #result span:last-child{ color: #f00; } </style></head> <body><div><div id="drum"></div></div> <hr><div> <input type="button" id="reset" value="reset"> <input type="button" id="switch" value="start/stop" or onClick="svset();"></div> <div class="result"> <div>◇◇ 結果 ◇◇</div> <div id="result"></div></div> <script type="text/javascript"> //********** rolling drum var DrumCreate = (function(){  var rand = function(n){ return Math.random() * n | 0; }  var shuffle = function(ary){    for(var i = ary.length - 1; i > 0; i--){     var j = rand(i + 1), tmp = ary[i];     ary[i] = ary[j], ary[j] = tmp;   } }  var add = function(elm, str, flag){   var e = document.createElement("span");   e.appendChild(document.createTextNode(str));   if(flag) elm.insertBefore(e, elm.firstChild)    else elm.appendChild(e); }  var clear = function(elm){   while(elm.firstChild) elm.removeChild(elm.firstChild); }  var init = function(obj){   if(obj.intervalId) clearInterval(obj.intervalId);   for(var i=obj.max; i; i--) obj.nums[i-1] = i;   shuffle(obj.nums);   obj.status = false;   obj.step = obj.height/(11 - obj.speed) + 0.5 | 0;   clear(obj.drum);   clear(obj.result);   add(obj.drum, "-", true); }  var setPos = function(elm, pos){   var nodes = elm.getElementsByTagName("span");   var i, node, p = -pos + "px";   for(i=0; node=nodes[i++];) node.style.top = p; }  var slide = function(obj){   var pos = obj.height, n = obj.nums.length;   if(!n){    clear(obj.drum);    add(obj.drum, "-");    obj.stop();    return;  }   obj.index = rand(n);   obj.value = obj.nums[obj.index];   add(obj.drum, obj.value, true);   setPos(obj.drum, pos);   obj.intervalId = setInterval(function(){    pos = pos>obj.step?pos-obj.step:0;    setPos(obj.drum, pos);    if(pos === 0){     clearInterval(obj.intervalId);     obj.drum.removeChild(obj.drum.lastChild);     if(obj.status) slide(obj)     else {      add(obj.result, obj.value);      obj.nums.splice(obj.index, 1);      if(typeof obj.endRoll === "function") obj.endRoll.call(obj);    }   }  }, 10); }  var drum = function(n){ this.nums = []; };  drum.prototype = {   roll: function(){    if(this.status) return;    this.status = true;    if(typeof this.beforeRoll === "function") this.beforeRoll();    slide(this);  },   stop: function(){ this.status = false; },   reset: function(){ init(this); },   beforeRoll: new Function(),   endRoll: new Function()  } return function(n , id1, id2, speed){  /* Max number, id for drum, id for result, speed(1to10) */   var obj = new drum();   obj.max = n;   obj.drum = document.getElementById(id1);   obj.result = document.getElementById(id2);   obj.height = obj.drum.clientHeight;   obj.speed = Math.max(1, Math.min(10, speed));   obj.reset();   return obj; }})(); //************ テスト用 スクリプト var testDrum = DrumCreate(75, "drum", "result", 5); /* Max number, id for drum, id for result, speed(1to10) */ addEvent("reset", "click", function(){testDrum.reset();}); addEvent("switch", "click", function(){  if(testDrum.status) testDrum.stop(); else testDrum.roll();}); /*@cc_on@*/ function addEvent(elm, eventname, func){ (typeof elm === "string"?document.getElementById(elm):elm)./*@if(1)attachEvent( 'on' + @else@*/addEventListener(/*@end@*/ eventname, func, false);}</script></body>

    • ベストアンサー
    • HTML
  • JavaScriptでの実装

    はじめまして。 google maps apiのGeocoderを使って住所を入力するとwebページ上にその住所を中心とした 地図を表示させたいのですがいまいちうまくいきません。 ソースコードは以下の通りです。 html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style type="text/css"> html, body { height: 100%; } </style> <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript"> google.load("jquery", "1.5.0"); </script> <script type="text/javascript" src="addressmaps.js"></script> <script type="text/javascript"> $(document).ready(function() { $("#button").click(function() { var address = $("#address").val(); // input要素の値を取得 drawMap(address); // 地図を生成する }); }); </script> <title>指定した住所を中心とする地図</title> </head> <body> <p> <input id="address" type="text" value="東京都世田谷区新町3丁目" size="50" /> <button id="button">地図を作る</button> </p> <div id="map_canvas" style="width:100%; height:90%;"></div> </body> </html> javascript // geocodeのための、地図を生成するコールバック関数 function createMap(result, status) { if (status == google.maps.GeocoderStatus.OK) { //console.log(result); var myPosition = result[0].geometry.location; var myOptions = { zoom : 14, center : myPosition, mapTypeId : google.maps.MapTypeId.ROADMAP }; var myMap = new google.maps.Map(document.getElementById("map_canvas"), myOptions); } } // 住所から位置を取得し、地図を生成する function drawMap(myAddress) { // 住所から位置を取得するためのオブジェクト var geocoder = new google.maps.Geocoder(); // 住所から位置を取得し、その結果を使って地図を生成する geocoder.geocode( { address : myAddress }, createMap); // コールバック関数createMap()は上で定義されている } 特にエラーはでないのですが地図が表示されません。 詳しい方、ご教授ください

  • javascriptとDOMを使ったxmlの読み込みがうまくいかない

    「10日でおぼえるxml入門教室」をいう書籍を使って、xmlの勉強を始めたのですが、ダウンロードした本の内容のソースコードを実行しても想定された結果になりません。そのコードは <html> <head> <title>5-1.XML文書を読み込んでみる</title> <script language="JavaScript"> <!-- var objDoc=new ActiveXObject("Msxml2.DOMDocument"); objDoc.async=false; objDoc.load("books.xml"); window.alert(objDoc.xml); //--> </script> </head> <body> <h1>5-1.XML文書を読み込んでみる</h1> </body> </html> というもので、本来xml文書を表示したダイアログが出るはずなのですが、ブラウザで開いてもダイアログが出ずに、いきなり見出し字が表示されるだけです。 環境はMacOS10.5.5, 使用したブラウザはSafari, Firefox, Operaです。 そもそもIEでないと実行できないコードなのでしょうか? javascriptに関しても初心者なので、できるだけわかりやすい言葉で説明していただけるとありがたいです。

    • 締切済み
    • XML
  • JavaScriptで複数のCSVを取得しひとつのCSVごとに1つのs

    JavaScriptで複数のCSVを取得しひとつのCSVごとに1つのselectフォームを表示しようとしております。 以下のようなJSを使っているのですが、aryCsvNameの配列にはいっている名前で複数のCSVを呼び込みたいのですが、 getElementById("select***").のところで、うまく***の箇所に配列の値をもっていけません。 aryCsvNameの値と***があえば、それぞれの<div>に表示されるのではないかとは思っているのですが、 それも予想です。 恐れ入りますが、どなたかいい方法をご教授ください。 function loadCSV() { aryCsvName = ["1","2","5","10"]; for (var j = 0; j < aryCsvName.length; j++) { var path = './data/'+aryCsvName[j]+'.csv'; var httpObj = createXMLHttpRequest(handleResult); if (httpObj) { httpObj.open("GET", path, true); httpObj.send(null); } } } function handleResult() { if ((this.readyState == 4) && (this.status == 200)) { var text = getAjaxFilter()(this.responseText); csvData = parseCSV(text); ///ここが不明 //document.getElementById("select***").innerHTML = result; //ここまで } } function parseCSV(str) { var CR = String.fromCharCode(13); var LF = String.fromCharCode(10); var lines = str.split(LF); var csvData = new Array(); for (var i = 0; i < lines.length; i++) { var cells = lines[i].split(","); if( cells.length != 1 ) csvData.push(cells); } return csvData; } function createXMLHttpRequest(cbFunc) { var XMLhttpObject = null; try { XMLhttpObject = new XMLHttpRequest(); } catch(e) { try { XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { return null; } } } if (XMLhttpObject) XMLhttpObject.onreadystatechange = cbFunc; return XMLhttpObject; } function getAjaxFilter() { if (navigator.appVersion.indexOf("KHTML") > -1) { return function(t) { var esc = escape(t); return (esc.indexOf("%u") < 0 && esc.indexOf("%") > -1) ? decodeURIComponent(esc) : t } } else { return function(t) { return t } } } HTML部分 <div id="select1"></div> <div id="select2"></div> <div id="select5"></div> <div id="select10"></div>