![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
yahooの日本語係り受け解析を使って解析を行おうと思っています。
<ResultSet xsi:schemaLocation="urn:yahoo:jp:jlp:DAServicehttp://jlp.yahooapis.jp/DAService/V1/parseRespon …
-<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です。
どなたかご教授お願いします。
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()
を使ってみては、いかがです。
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
- 回答日時:
まさかと思ってやってみましたがやっぱりだめでした。
リクエストページではちゃんと MorphemList になっているので
おそらく記述ミスかと。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- JavaScript gasについて 1 2022/05/31 21:51
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- JavaScript console.logがどうしても2つ機能しないのでアドバイスをくださいお願いします 2 2022/07/07 22:13
- JavaScript GoogleChart 階層ごとのブロックの長さを個別に設定したい 1 2022/07/06 14:27
- JavaScript WordPressのコンタクトフォーム7にて送信者の位置情報を送らせたい 2 2022/09/14 23:28
- JavaScript ソースコードのいじる場所が分かりません。 1 2022/12/23 02:06
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローカルのレジストリを読みたい
-
JavascriptのDOMについて
-
クラス デフォルトプロパティの...
-
JavaScriptの全言語仕様が分か...
-
Webページ中の javascript をVB...
-
Javascriptの最新構文の書籍
-
JavaScriptでオブジェクトを識...
-
イベントリスナーで読み込んだ...
-
if(1){...}とはどういうことで...
-
JSPの処理の途中で、JavaScript...
-
VB.NET2003 テキストボックスに...
-
ASP(VBS) ←→ JavaScript の変数...
-
至急お願いします!javascript:...
-
JavaScriptで ブラウザの閉じる...
-
javascript 文字列の最後から1...
-
フォルダを自動で開く
-
javascript:void(0)とは何でし...
-
VBA ステータスバー DoEvents
-
「終了していない文字列型の定...
-
VBScript から JavaScript を呼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローカルのレジストリを読みたい
-
Webページ中の javascript をVB...
-
画面間でのJavaScrip...
-
javaScriptでグローバル変数に...
-
フォルダ内のファイル名を取得...
-
CSSのクラスを動的に変更 classで
-
イベントevt?evt.target:event....
-
タブブラウザで focus() を実...
-
event.srcElementの動的設定
-
エクセル2010のvbaについて
-
jquery か javascript で json ...
-
【javascript】プロパティ?オ...
-
JavaScriptの仕様(ECMA-262以外)
-
PHPで定義した変数を引数として...
-
javascriptでオブジェクトのメ...
-
ASP.NETでURLにマッピングされ...
-
JavaScript 日数計算の関数で演...
-
VBAの引数の指定 カッコとイコ...
-
JavaScriptでオブジェクトを識...
-
jQueryで、listの要素数を取得...
おすすめ情報