誕生日にもらった意外なもの

先日http://oshiete1.goo.ne.jp/kotaeru.php3?q=1734032
の質問をした者です。

ところで、先日の質問でプログラム中に例としてあげたライブドアのブログのように、
__mode=rssに対応している場合
http://app.blog.livedoor.jp/takapon_ceo/tb.cgi/5 …
は、トラックバック先のURLを取得できるのですが、
__mode=rssに対応していないブログ
(例えばhttp://tb.plaza.rakuten.co.jp/hirobastaff/diary/ …楽天スタッフblog))
のようにレスポンスとしてエラー(error要素が1)を返すブログに対してはときはリンクを抽出することができないので、
URLで判別させて、リンクを取得する操作を実行するかしないかを決めたいです。

つまり、__mode=rssに対応しているブログ、例えばライブドアやヤプログやココログなどのブログに対しては、
リンクを抽出させるプログラムを実行させるため、
プログラム中のString url を見て、そのURLが__mode=rssに対応しているブログのURLの場合はプログラムを実行させる、
例えば、String url にblog.livedoorやjpyaplog.jpやcocolog-nifty.comなど含まれているなど、
__mode=rssに対応しているのでブログのURLが含まれていたら、トラックバック先のURLを抽出させる操作を実行させる。

一方、String urlを見て、__mode=rssに対応しているブログのurlにマッチしないブログのURLの場合はelseとして、
リンクを抽出させるプログラムは実行させず、違う処理をさせたいです。
(例えば、HTMLからトラックバック先のURLをパースさせる処理など)

このようにするには先日の質問のプログラムをどのように改正させればよいでしょうか?


よろしくお願いします。

A 回答 (2件)

urlの中に指定した文字列が含まれているかテストするサンプル


public class Sample {
public static void main(String[]args){
String url = "http://blog.livedoor.jp/everyone/";
if(url.matches(".*(blog\\.livedoor|yaplog\\.jp|cocolog-nifty\\.com|blogso-net\\.ne\\.jp).*")){
System.out.println("マッチした");
} else {
System.out.println("マッチしない");
}
}
}
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

お礼日時:2005/10/29 00:15

indexOfを使えば、文字列の中に指定した文字列が含まれているかどうかを調べることができます。


また、正規表現を使ってマッチする部分があるかどうかでも調べることができます。
この場合で言えば、実際のURLにアクセスするので能率はよろしくないですが、
<response><error>1</error>~</response>
とかerror要素が0でないというのが帰ってくるのであればそれを使うのも可能かと思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

正規表現を使う場合はどのようにプログラムを記述すればよいでしょうか?

また、URLの判別を複数でできるのでしょうか?

例えば、String urlに
"blog.livedoor" "yaplog.jp" "cocolog-nifty.com" "blogso-net.ne.jp" が含まれていたら、
__mode=rssでURLを抽出させるプログラムの

DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbfactory.newDocumentBuilder();
Document doc = builder.parse(url);

以降の操作をさせて、条件に一致しない場合は別の操作をさせるようにするには、
どのようにすればいいでしょうか?

よろしくお願いします。

お礼日時:2005/10/28 00:33

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