動画データを取得する その3

Javaニコニコ動画をゴニョゴニョする作戦 第1.8弾
久住小春*1ってかわいくね?モヲタじゃないけど。
最近の注目は卓球の四元選手。結構かわいいです。

というわけで今回はXMLを解析していくというお話。


ちょっと一旦まとめ

前回までに実装したこと

  • ニコニコ動画WebAPIにJavaで接続
  • 動画データのXMLデータを取得
  • とりあえず内容を標準出力に出力

今回以降実装すること

  • XMLパーサーの実装
  • とりあえず使いやすいようにBeanにして返却する?
  • エラーハンドリング(動画IDなどが間違っててエラーだった場合とか)

今回やったのがXMLパーサーの実装。
といってもかなりの中途半端な状態なんで完全なdraft版。
直さないといけないとこがいっぱい。

とりあえず一個だけとってみたのが以下のソース

package xmlParther;

import java.io.IOException;
import java.io.InputStream;


import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import com.sun.org.apache.xerces.internal.parsers.DOMParser;

public class XmlPather {

  public void analyzer(InputStream is){
    try {

      DOMParser parser = new DOMParser();
      parser.parse(new InputSource(is)); 

      Document document = parser.getDocument();

      if (document.hasChildNodes()) {
        NodeList nodeList = document.getElementsByTagName("first_retrieve");
        
        System.out.println(nodeList.getLength());
        Node node = nodeList.item(0);
        System.out.println("ノード名 = " + node.getNodeName());
        System.out.println("ノードタイプ = " + node.getNodeType());
        System.out.println(node.getTextContent());

      } else {
        System.out.println("子ノードがありません。");
      } 
    } catch (SAXException e) { 
      System.out.println("XMLデータがだめっぽい");
      e.printStackTrace();
    } catch (IOException e) { 
      e.printStackTrace();
    }

  }
}

色々いじってる最中なのでおかしいところがあると思われ。
first_retrieveタグ(投稿日時)をとってきただけ。

前回出ていた海外タグと国内タグが一緒に出るって件はtwitterで、現在仕様修正中と
情報をゲット。(@koizukaありがとうございます)
あと、時間の問題(最後に+9:00:00がついてる)はXMLでは最後にタイムゾーンをつける
というのが仕様だそうです。(twitter&コメントありがとうございました)

最初はXMLが予期せぬEOFしてんぞ ゴルァというエラーで泣いた。
デバッグトレースしたら全然違う値投げてた。ただそれだけ。GOMEN,World><*2

SAXExceptionってのがパースする際の例外をとってくれる。
SAXなんていうとキミキスのSAXくらいしか思い浮かばない*3

というわけで、次回もリリカルマジカルがんばります。

*1:月島きらりのなかのひと

*2:ギークなお姉さんから引用

*3:真央お姉ちゃん++