Webエンジニアの開発記

Webエンジニアの開発記録です。Java,SAStruts,jQuery,AmazonWebService,マッシュアップ。

ヤフーよりも簡単なHTMLをJTidyでDOM解析。

ヤフーのHTMLははっきり言って読みにくいです。

なのでまずはJTidyに慣れるために、

動作確認の意味も込めて、もっと簡単なHTMLを解析しましょう。

 

HTML サンプル で検索してでてきたのが↓↓こちら。

http://www.html-cool.com/samples/tryhtml_basic.html

 

上記サイトのHTMLをInputStreamとして下記のメソッドに渡しました。


            Tidy tidy = new Tidy();
            tidy.setQuiet(true);
            tidy.setShowWarnings(false);
            tidy.setForceOutput(true);
            Document tidyDOM = tidy.parseDOM(inputStream, null);

            System.out.println(tidyDOM.getElementsByTagName("script").getLength());
            System.out.println(tidyDOM.getElementsByTagName("body").getLength());
            System.out.println(tidyDOM.getElementsByTagName("form").getLength());

 

実行したところ、コンソールには

4
1
1

と出ました。

 

http://www.html-cool.com/samples/tryhtml_basic.htmlをブラウザで開いて、

ソースを見てみて欲しいのですが、

<script> タグは確かに4つあります。 ⇒ OK

<body> タグは2つ。 ⇒ ? ⇒ textareaタグ内はカウントされない模様 ⇒ OK

<form> タグは確かに1つあります。 ⇒ OK

 

なので、JTidyでのDOM構築に成功していると言えます。

また、気になる事がtidy#parseDOMしたときにエラーが出た場合です。

 

下記の画像のように、今回正常にDOM構築できたわけではなく、

3つほどエラーが出力されています。

f:id:tahkah0124:20131218005237j:plain

エラー内容は、「そのタグの位置おかしいよ」的なことです。

 

しかし、そのエラーが出た後に、

4

1

1

という結果が出ているので、

エラーが出たとしてもDOMは構築できた!ということです。

これが私が欲しかった結果でした^^

 

明日またヤフーの解析にチャレンジしてみます。