USP Browser 開発日誌 汚いHTMLのパース

何とかお知らせの取得まで実装できました。
添付ファイルの取得まで、アルゴリズム自体は非常に簡単で、
1つ目のテーブルからお知らせの内容を取得し、
2つ目のテーブルから添付ファイルを取得するというものなのですが、
困ったHTMLのおかげでしばらくはまっていました…(-_-;)。

<tr><td class='th' align='center'>掲載者</td>
<td class='td'>****</td></tr>
<br>
<tr><td class='th' align='center'>本文</td>
<td class='td'> ... </td></tr>

ヘン位置にある<br>を修正しようと、我らがTagSoupは、
<br>の手前でいったんテーブルを切ってしまうんです…。

他にも、おかしい個所と言えば…。

</head>
<body
<title> ... </title>
</head>
<body onload='size_set(0,0);'>

なんでしょうこのコードは…。
</tr><br><tr>問題(勝手に命名)と比較して解析に不要な個所なので、
実害はないのですが、醜さでいえばこっちが断トツで勝ちですね。
まぁソフトメーカーからすれば、動けばいいのでこれでもいいんでしょうか。
趣味マーからすると許せないコーディングでした…。

とりあえず、LogCatに吐かせて試運転してみた結果もとりあえず載せときます。

PortalClient client = new PortalClient();
client.setPortalContentHandler(new PortalContentHandler() { ... });
client.logon("****", "****");
03-03 17:07:58.944: D/PortalClient(17269): onLogon()
client.fetchTop();
03-03 17:08:01.114: D/PortalClient(17269): onSchedule(id=2315,beginDate=03/08/13,endDate=01/01/70,title=テストタイトル,priority=-1,place=null,content=null,color=-1,isHoliday=0)
03-03 17:08:01.174: D/PortalClient(17269): onSchedule(id=2316,beginDate=03/14/13,endDate=01/01/70,title=テストタイトル2,priority=-1,place=null,content=null,color=-1,isHoliday=0)
03-03 17:08:01.734: D/PortalClient(17269): onInformation(id=5177,isRead=0,isAttached=0,publicDateInfinite=0,publicBeginDate=03/03/13,publicEndDate=01/01/70,publicPerson=****,priority=3,category=0,title=****)
03-03 17:08:01.864: D/PortalClient(17269): onInformation(id=5174,isRead=1,isAttached=0,publicDateInfinite=0,publicBeginDate=02/27/13,publicEndDate=01/01/70,publicPerson=****,priority=3,category=0,title=****)
03-03 17:08:01.984: D/PortalClient(17269): onInformation(id=5156,isRead=0,isAttached=0,publicDateInfinite=0,publicBeginDate=02/25/13,publicEndDate=01/01/70,publicPerson=****,priority=2,category=0,title=****)
...
03-03 17:08:04.784: D/PortalClient(17269): onInformation(id=2435,isRead=1,isAttached=0,publicDateInfinite=0,publicBeginDate=04/22/12,publicEndDate=01/01/70,publicPerson=****,priority=1,category=0,title=****)
03-03 17:08:04.904: D/PortalClient(17269): onInformation(id=2363,isRead=1,isAttached=1,publicDateInfinite=0,publicBeginDate=04/14/12,publicEndDate=01/01/70,publicPerson=****,priority=3,category=0,title=****)
03-03 17:08:05.024: D/PortalClient(17269): onInformation(id=2308,isRead=1,isAttached=1,publicDateInfinite=0,publicBeginDate=04/07/12,publicEndDate=01/01/70,publicPerson=****,priority=3,category=0,title=****)
client.fetchSchedule(2315);
03-03 17:08:15.674: D/PortalClient(17269): onSchedule(id=2315,beginDate=03/08/13,endDate=03/08/13,title=テストタイトル,priority=3,place=テスト場所,content=テスト内容,color=16711680,isHoliday=0)
client.fetchSchedule(2316);
03-03 17:08:20.124: D/PortalClient(17269): onSchedule(id=2316,beginDate=03/14/13,endDate=01/01/70,title=テストタイトル2,priority=0,place=テスト場所2,content=テスト内容2
03-03 17:08:20.124: D/PortalClient(17269): 改行,color=52479,isHoliday=0)
client.fetchInformation(2435);
03-03 17:08:22.964: D/PortalClient(17269): onInformation(id=2435,isRead=0,isAttached=0,publicDateInfinite=1,publicBeginDate=01/01/70,publicEndDate=01/01/70,publicPerson=****,priority=-1,category=-1,title=****)
03-03 17:08:22.964: D/PortalClient(17269): onInformation(content=****)
client.fetchInformation(2308);
03-03 17:08:25.724: D/PortalClient(17269): onInformation(id=2308,isRead=0,isAttached=0,publicDateInfinite=0,publicBeginDate=04/07/12,publicEndDate=04/02/13,publicPerson=****,priority=-1,category=-1,title=****)
03-03 17:08:25.724: D/PortalClient(17269): onInformation(content=****)
03-03 17:08:25.724: D/PortalClient(17269): onInformationAttachement(url=https://sgkwe.office.usp.ac.jp/SGKWeb/upload/msg/CDMSG****/****.pdf,filename=****.pdf,description=)
03-03 17:08:25.724: D/PortalClient(17269): onInformationAttachement(url=https://sgkwe.office.usp.ac.jp/SGKWeb/upload/msg/CDMSG****/****.pdf,filename=****.pdf,description=)
03-03 17:08:25.724: D/PortalClient(17269): onInformationAttachement(url=https://sgkwe.office.usp.ac.jp/SGKWeb/upload/msg/CDMSG****/****.pdf,filename=****.pdf,description=)
client.logout();
03-03 17:08:27.294: D/PortalClient(17269): onLogout()
  1. コメント 0

  1. トラックバック 0

return top