動画データを取得する その3
Javaでニコニコ動画をゴニョゴニョする作戦 第1.8弾
久住小春*1ってかわいくね?モヲタじゃないけど。
最近の注目は卓球の四元選手。結構かわいいです。
というわけで今回は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
というわけで、次回もリリカルマジカルがんばります。