2008/08/18

JavaでのHTMLパース

protected void regist(String path) throws Exception {

try {

log.info("regist file:" + path);


String url = getURLFromPath(path);
if (StringUtils.isBlank(url)) {
log.warn("path format invalid:" + path);
return;
}

// URLコンテンツテーブル検索
Map req = new HashMap();
req.put("url", url);
List resList = urlContentSQL.select(req);

// 複数セーブポイント
// urlContentSQL.getSqlMapClient().startTransaction()

String uriFileName = path;
if (uriFileName.indexOf(':') == -1)
uriFileName = "file:" + uriFileName;

Source source = new Source(new InputStreamReader(new FileInputStream(uriFileName), "JISAutoDetect"));

String title = getTitle(source);
String txt = source.getTextExtractor().setIncludeAttributes(true).toString();
String fullTxt = txt;
String orgTxt = source.toString();

req.put("title", title);
req.put("fullTxt", fullTxt);
req.put("orgTxt", orgTxt);
// modified_datetime // デフォルトで設定される
req.put("modifiedUsrId", usrId);

String contentId = null;
// URLコンテンツテーブル新規作成
if (resList == null || resList.size() == 0) {

log.info("insert url_content");

// created_datetime デフォルトで設定される

contentId = MsgDBUtils.getUUID();
req.put("createdUsrId", usrId);
req.put("id", contentId);
urlContentSQL.insert(req);

}
// URLコンテンツテーブル更新
else {

log.info("update url_content");

contentId = (String)resList.get(0).get("id");
urlContentSQL.update(req);

}

// コンテンツタグ対応を検索
String seedUrlId = getSeedUrlIdFromPath(path);
List
resSeedUrlList = getSeedUrlIdData(seedUrlId);
if (resSeedUrlList == null || resSeedUrlList.size() == 0) {
log.error("seed_url.seed_url_id invalid:" + seedUrlId);
return;
// throw new Exception("seed_url.seed_url_id invalid:" + seedUrlId);
}

for (Map resSeedUrl : resSeedUrlList) {

Map reqContentTagMap = new HashMap();
List
resContentTagMapList = contentTagMapSQL.select(reqContentTagMap);

// コンテンツタグ対応新規作成
if (resContentTagMapList == null || resContentTagMapList.size() == 0) {

log.info("insert content_tag_map");

reqContentTagMap.put("id", MsgDBUtils.getUUID());
contentTagMapSQL.insert(reqContentTagMap);

}

}

}
catch (Exception e) {
log.error("regist error", e);
throw e;

}


}

1 件のコメント:

匿名 さんのコメント...

JerichoHTMLParserライブラリを使うのはどうですか?とても便利ですよ。mavenリポジトリにも上がっているので依存ライブラリの取得も楽です。
http://inuwasi.net/a/10