• ベストアンサー

JSPでの文字列編集出力

JSPで文字列を読み込み、一部編集してデータベースに出力させようとしています。現在、文字列の編集の部分でうまくいかず困っています。 <tr> <td align="center"> </td> <td align="center">C 1</td> <td align="center">C 2</td> </tr> <tr> <td><font color="#FFFFFF">_</font>コスト</td> <td align="right"><font color="#FFFFFF">_</font>\ 200000<font color="#FFFFFF">_</font></td> <td align="right"><font color="#FFFFFF">_</font>\ 300000<font color="#FFFFFF">_</font></td> </tr> の内容を読み込み、タグを取り除き<tr>ごとに次の行として ,C 1,C 2 _,コスト,_,\200000,_,_,\300000,_ のように出力したいのです。 現在、String型で"<td"や">"と指定し、substring()やindexOf()を使いやっているのですが、 <td align="right"><font color="#FFFFFF">_</font>\ 300000<font color="#FFFFFF">_</font></td> のような、同じ行に2度出てくると初めしか文字列を取らなかったりしてうまくいきません。 違う方法や、アドバイスなどないでしょうか?また、XMLのDOMを使った方がいいのでしょうか?(XMLは全くわからないのですが、DOMを使えばもっと簡単にできるのでしょうか?) よろしくお願いします。

  • Java
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • mahny
  • ベストアンサー率74% (57/77)
回答No.1

おはようございます 文字列を駆使するよりは、char配列に分解してしまって、 状態遷移法的な解析をした方がスッキリしそうに思えます。   public static void main(String[] args) {          String htmlDoc=         "<tr>"       +  "<td align=\"center\"> </td>"       +  "<td align=\"center\">C 1</td>"       +  "<td align=\"center\">C 2</td>"       +  "</tr>"       +  "<tr>"       +  "<td><font color=\"#FFFFFF\">_</font>コスト</td>"       +  "<td align=\"right\"><font color=\"#FFFFFF\">_</font>\\ 200000<font color=\"#FFFFFF\">_</font></td>"       +  "<td align=\"right\"><font color=\"#FFFFFF\">_</font>\\ 300000<font color=\"#FFFFFF\">_</font></td>"       +  "</tr>";            StringBuffer sbResult= new StringBuffer();     char[] doc= htmlDoc.toCharArray();     boolean tagFlg= false;  // true時はタグとして解析          for (int i= 0; i< doc.length; i++){              if (tagFlg== true){      // タグ読みモード                  // 終了文字'>'が来たらタグモード終了         if (doc[i]== '>'){           tagFlg= false;         }         continue;                }       else{            // テキスト読みモード                  // 開始文字'<'ならタグモードへ移行         if (doc[i]== '<'){           tagFlg= true;           continue;         }         else{           sbResult.append(doc[i]);         }       }     }          // 結果出力     System.out.println(sbResult);        } ▼コンソールに出てきた結果  C 1C 2_コスト_\ 200000__\ 300000_ 力尽きたのでタグ取り作業しかしていませんが、 タグモードの時に中身を一時バッファを溜め込んでおいて テキストモードになった時、"/tr"は無視して、 "tr"を見つけたら改行コードを sbResult に追加書き込み してやればいいですね。 でもやっぱり用意されているDOMライブラリ使った方が ラクですしバグも出にくいと思います…。 HTMLドキュメント全体をツリー構造と捉えることが出来てますし、 後付編集なども可能ですから…。 参考までに私が依然使っていたHTMLParcerライブラリを張っておきます。 他にもXML/DOM/HTML等の解析ライブラリはあるので気に入ったものを探してみるのも良いと思います。

参考URL:
http://people.apache.org/~andyc/neko/doc/html/

その他の回答 (1)

noname#45950
noname#45950
回答No.2

DOMを使った方がいいと思います。 と、書いたところで、質問者さんの同様の質問に回答したものの、返答も締め切りもされていないことに気づいたので、これ以上のコメントは控えさせていただきます。 (DOMを使った方が・・・って私の前回の回答ですよね・・・?)

関連するQ&A

  • VBAでホームページに表示された情報をセルに分割して取得していきたいのですのですがどのように記述したらよろしいでしょうか。

    宜しくお願い致します。 HTMLを長々と記述しておりますが、お許しください。 VBAでホームページに表示された情報をセルに分割して取得していきたいのですのですがどのように記述したらよろしいでしょうか。 以下のようなHTMLがありまして、エクセルのWEBクエリを利用して取得していこうかと思ったのですが、エラーが表示されてしまいうまく取得することができませんでした。 そこで、ブラウザコントロールでしたら、ページが表示された時点で、 すべての情報の取り込みが完了してますので、HTMLをうまく解体すればセルに情報を格納できるかと思ったのですが、どのようにデータを解体・取得すればいいのかが分からない状態ですので、是非御教授いただけたらと思っております。 なお、以下のHTMLは一行目に項目二行目にその項目に基づいた情報が記載されておりまして、今回は二行目までの記述となっておりますが、基本的には複数行にわたるものとなっておりますので、是非その点に関しても踏まえたうえでのアドバイスをいただけたらと思っております。 ご面倒をおかけいたしますが、何卒宜しくお願い致します。 <TABLE width="100%" border="1" cellspacing="1" cellpadding="3"> <TR bgcolor="#006633"> <TD align="center" nowrap><FONT color="#FFFFFF">訂正<BR>取消</FONT></TD> <TD align="center" width="11%"><FONT color="#FFFFFF">口座区分</FONT></TD> <TD align="center"><FONT color="#FFFFFF">銘柄</FONT></TD> <TD align="center" width="13%" nowrap><FONT color="#FFFFFF">取引区分<BR>執行条件</FONT></TD> <TD align="center" width="5%"><FONT color="#FFFFFF">売買</FONT></TD> <TD align="center"><FONT color="#FFFFFF">発注数[株]</FONT></TD> <TD align="center"><FONT color="#FFFFFF">値段[円]</FONT></TD> <TD align="center" width="8%"><FONT color="#FFFFFF">受付日時</FONT></TD> <TD align="center" width="5%"><FONT color="#FFFFFF">有効期間</FONT></TD> <TD align="center" width="5%"><FONT color="#FFFFFF">状態</FONT></TD> <TD align="center"><FONT color="#FFFFFF">約定<BR>数量[株]-単価[円][時間]</FONT></TD> </TR> <TR bgcolor="#CCCCCC"> <TD align="center" valign="middle" bgcolor="#CCCCCC"><BR></TD> <TD align="center" valign="middle">**</TD> <TD align="center" valign="middle"><A href="/servlet/ITS/direct/DirectStkOrder;********************・・・・" onClick="return linkCheck()"><FONT color="#211799"><B>*****</B><BR>*****/FONT></A></TD> <TD align="center" valign="middle">**<BR>-</TD> <TD align="center" valign="middle"><FONT color="#990000"><B>*</B></FONT></TD> <TD align="right" valign="middle">****</TD> <TD align="right" valign="middle">****</TD> <TD align="center" valign="middle">**/**<BR>*******</TD> <TD align="center" valign="middle">当日</TD> <TD align="center" valign="middle"><B><A href="/servlet/ITS/stock/StkOrderDetail**********************・・・・・" onClick="return linkCheck()"><FONT color="#211799">**</FONT></A></B></TD> <TD align="right" valign="middle"><BR></TD> </TR> </TABLE>

  • HTMLから正規表現で必要な情報を取得したい

    以下のようなHTMLがあり、PHPで正規表現を使い(A)~(J)の値を取得したいのですが、 どのような正規表現を書けば取得できるか迷っています。 正規表現でなくとも取得できる方法があればご教示ください。 どうかお願いいたします。 ※ちなみにPHP5です。 ---------------------------------------------------------- ~省略~ <tr bgcolor="#ffffff"> <td align="center">(A)<br></td> <td align="center">(B)<br></td> <td align="center">(C)<br></td> <td><a href="http://aaaaa.co.jp">(D)</a><br></td> <td align="right">(E)</td> <td align="right">(F)<br></td> <td align="right">(G)</td> <td align="right">(H)</td> <td align="right">(I)</td> <td align="center" nowrap><font color="#FFFFFF">(J)</font></td> </tr> ~省略~

    • ベストアンサー
    • PHP
  • モバイルで表示するゴルフスコアのデザイン

    お世話になっております、めぐみと申します。 4.7インチ程度のモバイル画面にかっこいいゴルフスコアが表示できないか悩んでいます。 自分で作っては見たもののあまりよくないです。 あまり、データを大きくしたくないので極力gif等使用したくはないですが、多少なら使ってもよいかと思っています。 色合いがきれいで、丸みとかあったほうがいいのかと考えてはいるのですが。。。 もし、何か良いアイデアがありましたらどんな些細なことでも結構ですのでアドバイス頂けないものでしょうか。 以下、HTMLを貼り付けます。 <!doctype html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <table border="1"> <tbody> <tr> <td bgcolor="#4C6E29" style="color: #FFFFFF">日付</td> <td colspan="11" bgcolor="#4C6E29" style="color: #FFFFFF">2018.02.19</td> </tr> <tr> <td rowspan="2" bgcolor="#4C6E29" style="color: #FFFFFF">場所</td> <td colspan="11" bgcolor="#4C6E29" style="color: #FFFFFF">〇〇ゴルフ場In</td> </tr> <tr> <td colspan="11" bgcolor="#4C6E29" style="color: #FFFFFF">〇〇ゴルフ場Out</td> </tr> <tr> <td rowspan="4" bgcolor="#4C6E29">&nbsp;</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">1</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">2</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">3</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">4</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">5</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">6</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">7</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">8</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">9</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">小計</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">実績合計</td> </tr> <tr> <td align="center" valign="middle" bgcolor="#98A51C">-1</td> <td align="center" valign="middle" bgcolor="#98A51C">1</td> <td align="center" valign="middle" bgcolor="#98A51C">0</td> <td align="center" valign="middle" bgcolor="#98A51C">0</td> <td align="center" valign="middle" bgcolor="#98A51C">1</td> <td align="center" valign="middle" bgcolor="#98A51C">-2</td> <td align="center" valign="middle" bgcolor="#98A51C">0</td> <td align="center" valign="middle" bgcolor="#98A51C">2</td> <td align="center" valign="middle" bgcolor="#98A51C">0</td> <td align="center" valign="middle" bgcolor="#98A51C">1</td> <td align="center" valign="middle" bgcolor="#98A51C">+15</td> </tr> <tr> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">10</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">11</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">12</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">13</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">14</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">15</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">16</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">17</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">18</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">小計</td> <td align="center" valign="middle" bgcolor="#4C6E29" style="color: #FFFFFF">打数合計</td> </tr> <tr> <td align="center" valign="middle" bgcolor="#98A51C">2</td> <td align="center" valign="middle" bgcolor="#98A51C">1</td> <td align="center" valign="middle" bgcolor="#98A51C">-1</td> <td align="center" valign="middle" bgcolor="#98A51C">1</td> <td align="center" valign="middle" bgcolor="#98A51C">2</td> <td align="center" valign="middle" bgcolor="#98

  • Mac IEのバグなのでしょうか?

    TMEspionです。 <table border="0" cellpadding="5" cellspacing="5"><tr><td width="100" align="left" bgcolor="#999999"><table width="50" border="0" cellpadding="5" cellspacing="5"><tr><td align="left" bgcolor="#FFFFFF">左</td></tr><tr><td align="center" bgcolor="#FFFFFF">中</td></tr><tr><td align="right" bgcolor="#FFFFFF">右</td></tr></table></td><td width="100" align="center" bgcolor="#999999"><table width="50" border="0" cellpadding="5" cellspacing="5"><tr><td align="left" bgcolor="#FFFFFF">左</td></tr><tr><td align="center" bgcolor="#FFFFFF">中</td></tr><tr><td align="right" bgcolor="#FFFFFF">右</td></tr></table></td><td width="100" align="right" bgcolor="#999999"><table width="50" border="0" cellpadding="5" cellspacing="5"><tr><td align="left" bgcolor="#FFFFFF">左</td></tr><tr><td align="center" bgcolor="#FFFFFF">中</td></tr><tr><td align="right" bgcolor="#FFFFFF">右</td></tr></table></td></tr><tr><td align="left" bgcolor="#999999">左</td><td align="center" bgcolor="#999999">中</td><td align="right" bgcolor="#999999">右</td></tr></table> --------------------------------- 上記のソースの様に、テーブルを縦2段、横2列にセルを作り、上段はテーブルタグ、下段はテキストでそれぞれalign属性をleft、center,rightと設定しています。 ところがInternet Explorer 5.2 for Macで見ると、 上段右のテーブルタグは「align="right"」の効果が出ていません。 この質問を呼んでいる回答者様には、ブラウザでどう表示されるんでしょうか? どう表示されたかという結果とブラウザ名を教えて下さい。

    • ベストアンサー
    • HTML
  • ホームページの作成の質問です

    下のように画像の横にテーブルを並べたいのですが、 画像   テーブル テーブルは <table border=1 Width="500" height"70" cellspacing=1 cellpadding=7> <tr style="height:20px;" align="center"> <td width="120" BGCOLOR="#8A2BE2"><font color="#FFFFFF">文字</td> <td width="120" BGCOLOR="#8A2BE2"><font color="#FFFFFF">文字</td> <td width="120" BGCOLOR="#8A2BE2"><font color="#FFFFFF">文字</td> <td width="120" BGCOLOR="#8A2BE2"><font color="#FFFFFF">文字</td> <td width="120" BGCOLOR="#8A2BE2"><font color="#FFFFFF">文字</td> </tr> このようなテーブルです、 よろしくお願いします<m(__)m>

  • ホームページ製作過程で、タグの組み方に困っています。

    テーブルを <TABLE cellpadding="0" bgcolor="#000000" border="3"> <tr> <td valign="middle" align="center" width="13" height="23"><font face="" color="#FFFFFF" size="3">0</font></td> <td valign="middle" align="center" width="13" height="23"><font face="" color="#FFFFFF" size="3">0</font></td> <td valign="middle" align="center" width="13" height="23"><font face="" color="#FFFFFF" size="3">0</font></td> <td valign="middle" align="center" width="13" height="23"><font face="" color="#FFFFFF" size="3">0</font></td> </tr> </TABLE> のように組んでいます。 これは同盟に参加している人数を表示するためのものなのですが、このテーブルの左右に 現在のメンバー ○○○○ 名 (○→テーブル) のように字をするにはどうすればいいのでしょうか。 また、この字を含めたテーブル全体の表示位置を指定するにはどうすればいいのでしょうか この2点について教えていただきたいです。よろしくお願いいたします。

  • 背景が透けると文字も透ける

    初心者ですが、本やネットをみながらHPを作成しています。 そこで、背景画像の上に文字を入れると読みにくいので 画像を透けさせようとテーブルを作成したのですが 同時に文字も透けてしまい、読みにくさは変わりません。 どうすれば良いでしょうか? タグは以下の通りです。 <table align="center" style="background-color:#c0c0c0; filter:Alpha(opacity=50);" height="600" width="400"> <tr><td> <font size="-1" color="#000000">文字文字文字 </font> </td></tr> </table>

    • ベストアンサー
    • HTML
  • あるソースをあるソースに埋め込みたい

    http://www.1uphp.com/con2/menu/tab41.html このURLの一番下の「全ての書き方」を 下記のソースのメニューの右にあるテーブルに埋めたいと思っています。 しかし、上記URLのソースのスタイルシート部分を書きのソースへコピペした段階で 下記のソースのページが全て左寄せみたいになってしまいます。 どこをどう記述すれば埋め込めるでしょうか? <html> <head> <style type="text/css"> <!-- A.menu:link,A.menu:visited { BORDER-RIGHT: #666666 1px solid; PADDING-RIGHT: 15px; BORDER-TOP: #666666 1px solid; DISPLAY: block; PADDING-LEFT: 15px; PADDING-BOTTOM: 5px; BORDER-LEFT: #666666 1px solid; COLOR: #ffffff; PADDING-TOP: 12px; BORDER-BOTTOM: #666666 1px solid; HEIGHT: 40px; BACKGROUND-COLOR: pink; TEXT-DECORATION: none } A.menu:hover,A.menu:active { BORDER-RIGHT: #ffffff 1px ridge; PADDING-RIGHT: 15px; BORDER-TOP: #ffffff 1px ridge; DISPLAY: block; PADDING-LEFT: 15px; PADDING-BOTTOM: 5px; BORDER-LEFT: #ffffff 1px ridge; COLOR: gray; PADDING-TOP: 12px; BORDER-BOTTOM: #ffffff 1px ridge; HEIGHT: 40px; BACKGROUND-COLOR: #ffffff; TEXT-DECORATION: none } TABLE#mainTable { BORDER-RIGHT: #c0c0c0 1px solid; BORDER-TOP: #c0c0c0 1px solid; BORDER-LEFT: #c0c0c0 1px solid; BORDER-BOTTOM: #c0c0c0 1px solid; BORDER-COLLAPSE: collapse } TD.borderAll,TD.borderNoTop,TD.borderNoBottom { BORDER-RIGHT: #c0c0c0 1px solid; BORDER-TOP: #c0c0c0 1px solid; BORDER-LEFT: #c0c0c0 1px solid; BORDER-BOTTOM: #c0c0c0 1px solid } --> </style> </head> <body bottommargin="10" background="sozai/kabegami.gif" topmargin="10"> <table height="1817" width="730" align="center" id="mainTable" style="WIDTH: 730px; HEIGHT: 1817px"> <tr> <td colspan="2" class="borderNoTop" bgcolor="#ffffff" height="20" ></td> </tr> <tr> <td colspan="2" height="120" class="borderAll" background="sozai/title_back.gif"><strong><font color="#ff0000" size="5"></font></strong></td> </tr> <tr> <td class="borderAll" colspan="2" valign="top" align="left" bgcolor="#ffffff"><br> <table cellspacing="0" cellpadding="0" width="155" align="left" border="0"> <tr> <td bgcolor="#ffffff"> <table style="MARGIN-TOP: -2px; FONT-WEIGHT: bold; WIDTH: 146px; FONT-FAMILY: 'mspゴシック'; HEIGHT: 241px" cellspacing="3" cellpadding="0" width="146" align="center" border="0"> <tr> <td><a class="menu" href="index.html" >Top</font></a></td> </tr> <tr> <td><a class="menu" href="1_news.html" >News</font></a></td> </tr> <tr> <td><a class="menu" href="2_sakuhin.html" >作品集</font></a></td> </tr> <tr> <td style="BORDER-RIGHT: #666666 1px solid; PADDING-RIGHT: 15px; BORDER-TOP: #666666 1px solid; PADDING-LEFT: 15px; PADDING-BOTTOM: 10px; BORDER-LEFT: #666666 1px solid; PADDING-TOP: 10px; BORDER-BOTTOM: #666666 1px solid" align="center"><font color="gray">お教室情報</font></td> </tr> <tr> <td><a class="menu" href="5_shop.html" >Shopping</a></td> </tr> <tr> <td><a class="menu" href="6_link.html" >お友達サイト</a></td> </tr> <tr> <td><a class="menu" href="7_mail.html" >Mail</a></td> </tr> </table> <p align="center"> <font ><font color="#808080" size="1" > <font ><font size="2"> <br></font></font>&nbsp; </p></font></font></td></tr></table> <table style="WIDTH: 560px; HEIGHT: 1380px" cellspacing="1" cellpadding="20" width="560" align="left" bgcolor="#c0c0c0" border="0"> <tr> <td valign="top" align="left" bgcolor="#ffffff"> <p align="left"><font color="#808080"></font>&nbsp;</p></td></tr></table> </td></tr> <tr> <td class="borderAll" colspan="2" bgcolor="#ffffff" height="20"> <p align="center"> </p></td> </tr> <tr> <td colspan="2" class="borderNoBottom" bgcolor="#ffffff" height="20" > </td> </tr> </table> </body></html>

  • タグに詳しい方、助けて下さい!

    以下のようにタグを打って携帯サイト作ろうとしているのですが、携帯から確認すると途中からテーブルが左側に寄って見えるようになりました。(PCからだとちゃんと真ん中になってます) タグを引っ張ってきただけで知識はなく、どこがどうおかしいのかわかりません。 わかる人いたら教えて下さい…お願いします! <center><Table align="center" Border="0" Width="200" Valign="middle"> <Tr> <Td ColSpan="2" bgcolor="#FF69B4" Align="Center"><B><Font Color="#ffff33">★</Font><Font Color="#FFffff">更新・12/**</Font><Font Color="#ffff33">★</Font></B><Td></Tr><Tr><Td Width="600">※トップイラスト挿入※</Td><Td Width="20"><Font Color="#FF69B4"><Font Color="#ffff33">★</Font><br>*↓コンテンツ5行くらい<br><Font Color="#ffff33">★</Font></Font></Tr> <Tr><Td ColSpan="2" bgcolor="#FF69B4"><Marquee><Font Color="#ffffff">12/** ****</Font></Marquee></Td></Tr></Table></center>

  • 文字化けすると言われましたが

    自宅PC(XP)、会社PC(98)では 問題なかったのですが、XPでIE6を使用の方に 文字化けすると言われました 以下ソースです 「恋をして…」が文字化けし エンコードすれば読めるらしいのですが…。 ひょっとして、末にある <BASEFONT SIZE="2"Font Color="black"> が問題なのでしょうか? <HTML> <HEAD> <TITLE>玄関</TITLE> <meta http-equiv="refresh" content="8; url=top.html"> </HEAD> <STYLE> BODY{ scrollbar-3dlight-color:#ffffff; scrollbar-arrow-color:#ffffff; scrollbar-darkshadow-color:#ffffff; scrollbar-face-color:#ffffff; scrollbar-highlight-color:#ffffff; scrollbar-shadow-color:#ffffff; scrollbar-track-color:#ffffff;} </STYLE> <BODY bgcolor="white" text="#000000" link="#000000" vlink="#000000" alink="#000000" style="background-repeat : no-repeat;background-attachment : fixed;background-image : url;; background-position : right bottom;"> <DIV ALIGN="center"><TABLE border="0"> <BR><BR><BR><BR><BR><BR><BR><TR> <TD><BR><BR><BR>恋をして私は</TD> </TR> <TR> <TD><DIV ALIGN="rignt"><Img Src="image/back/031231.bmp" Alt="" border="0"></DIV></TD> </TR> <TR> <TD><DIV ALIGN="left"><B></B><BR><BR>                         馬鹿になった。</DIV></TD> </TR> </TABLE></DIV> <BASEFONT SIZE="2"Font Color="black"><p align="left"> <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>       <BR></Font> </P> </BODY> </HTML>

    • ベストアンサー
    • HTML

専門家に質問してみよう