dポイントプレゼントキャンペーン実施中!

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です。
どなたかご教授お願いします。

A 回答 (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()
を使ってみては、いかがです。
    • good
    • 0

んー手元では再現できない...



このライブラリ殆ど使ったことないし。

自分の環境(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データで話していると思うので
この挙動が一致しているかどうか返答もらってもいいかな?
    • good
    • 0

http://developer.yahoo.co.jp/webapi/jlp/da/v1/pa …

良く見ると
Morphem【e】List
になってない?

#未検証だけど
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/01/26 16:55

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