<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
   <style type="text/css" media="all">
      @import url("/ReviewToolWS/css/maven-base.css");
      @import url("/ReviewToolWS/css/maven-theme.css");
      @import url("/ReviewToolWS/css/site.css");
      @import url("/ReviewToolWS/css/screen.css");
  </style>
  <script type="text/javascript">
   function WrapScript(){
   var tds=document.getElementsByTagName("td");
   for(var i=0;i<tds.length;i++)
   {
   tds[i].wrap="yes";
   }
   }
  </script>
  <link rel="stylesheet" href="/ReviewToolWS/css/print.css" type="text/css" media="print" />
  </head>
  <body topmargin="0" marginheight="0" marginwidth="0" bottommargin="0" rightmargin="0">
  <form id="frm1" >
 <table cellspacing="0" cellpadding="0" style="width:100%;valign:top"  border="1">
<tr>
  <td colspan=4>
  
<table class="simple" style="width:1820;align:center" id="displaytag1">
<thead>
<tr>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=0&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Turn No<br/>轮次</a></th>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=1&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Reviewer<br/>评审人员</a></th>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=2&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Description<br/>描述</a></th>
<th class="sortable sorted order1">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=3&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=1">Confirmation<br/>问题确认</a></th>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=4&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Author<br/>回复者</a></th>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=5&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Re<br/>回复内容</a></th>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=6&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Rectified<br/>是否已改正</a></th>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=7&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Location(Page/Sec/All)<br/>位置(页/段)</a></th>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=8&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Defect/Query<br/>缺陷/疑问</a></th>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=9&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Defect Severity<br/>严重程度</a></th>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=10&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Question Root Object<br/>问题根源对象</a></th>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=11&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Defect Type<br/>缺陷类型</a></th>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=12&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Defect Trigger Factor<br/>缺陷触发因素</a></th>
<th class="sortable">
<a href="/ReviewToolWS//center.jsp?d-7272271-s=13&amp;projectId=0F865F13-21D6-437E-BAC2-021FC1E9BD9A&amp;d-7272271-o=2">Defect Qualifier<br/>缺陷界定</a></th></tr></thead>
<tbody>
<tr class="odd">
<td style="width:20">1</td>
<td style="width:50">s65404</td>
<td style="width:400">uwDdrDataBeginAddr 在pusch中是按照逻辑顺序放置的,不是按照commtbl里的小区指示放的</td>
<td style="width:60">接受</td>
<td style="width:50">l00140929</td>
<td style="width:300">已修改</td>
<td style="width:70">是</td>
<td style="width:80">\LBB\UL\CTRL\src\LBB_UL_CTRL_ADM_PucchMainProc.c</td>
<td style="width:70">Defect缺陷</td>
<td style="width:70">Minor一般</td>
<td style="width:100"></td>
<td style="width:80"></td>
<td style="width:80"></td>
<td style="width:55"></td></tr>
<tr class="even">
<td style="width:20">1</td>
<td style="width:50">w00170701</td>
<td style="width:400">不用的注释去掉</td>
<td style="width:60">接受</td>
<td style="width:50">l00146658</td>
<td style="width:300">o</td>
<td style="width:70">是</td>
<td style="width:80">\wuyl_work\unimath\ClearCaseView\w00170701_view4\WL_BESA_LTE_3X_CODE\LBB\UL\PUCCH\src\LBB_UL_PUCCH_SpreadSeqCalc.c</td>
<td style="width:70">Defect缺陷</td>
<td style="width:70">Minor一般</td>
<td style="width:100"></td>
<td style="width:80"></td>
<td style="width:80"></td>
<td style="width:55"></td></tr>
<tr class="odd">
<td style="width:20">1</td>
<td style="width:50">l00140929</td>
<td style="width:400">最后一个Core可能非LogicCoreId=0的Core,这里就会有问题</td>
<td style="width:60">接受</td>
<td style="width:50">l00140929</td>
<td style="width:300">已修改</td>
<td style="width:70">是</td>
<td style="width:80">\LBB\UL\CTRL\src\LBB_UL_CTRL_ADM_PucchMainProc.c</td>
<td style="width:70">Defect缺陷</td>
<td style="width:70">Major严重</td>
<td style="width:100"></td>
<td style="width:80"></td>
<td style="width:80"></td>
<td style="width:55"></td></tr>
<tr class="odd">
<td style="width:20">1</td>
<td style="width:50">w00170701</td>
<td style="width:400">考虑扩展CP是否有问题</td>
<td style="width:60">接受</td>
<td style="width:50">l00146658</td>
<td style="width:300">本轮迭代先不考虑扩展CP</td>
<td style="width:70">否</td>
<td style="width:80">\LBB\UL\PUCCH\src\LBB_UL_PUCCH_Report.c</td>
<td style="width:70">Defect缺陷</td>
<td style="width:70">Minor一般</td>
<td style="width:100"></td>
<td style="width:80"></td>
<td style="width:80"></td>
<td style="width:55"></td></tr>
<tr class="even">
<td style="width:20">1</td>
<td style="width:50">f00174951</td>
<td style="width:400">可以在前面++</td>
<td style="width:60">接受</td>
<td style="width:50">l00140929</td>
<td style="width:300">已修改</td>
<td style="width:70">是</td>
<td style="width:80">\BESE300CODE\WL_BESA_LTE_3X_CODE\LBB\UL\PUSCH\src\LBB_UL_PUSCH_Uci.c</td>
<td style="width:70">Defect缺陷</td>
<td style="width:70">Minor一般</td>
<td style="width:100"></td>
<td style="width:80"></td>
<td style="width:80"></td>
<td style="width:55"></td></tr>
<tr class="even">
<td style="width:20">1</td>
<td style="width:50">w00170701</td>
<td style="width:400">不用的注释去掉</td>
<td style="width:60">重复</td>
<td style="width:50">l00146658</td>
<td style="width:300">o</td>
<td style="width:70">否</td>
<td style="width:80">\wuyl_work\unimath\ClearCaseView\w00170701_view4\WL_BESA_LTE_3X_CODE\LBB\UL\PUCCH\src\LBB_UL_PUCCH_ParamCalc.c</td>
<td style="width:70">Defect缺陷</td>
<td style="width:70">Minor一般</td>
<td style="width:100"></td>
<td style="width:80"></td>
<td style="width:80"></td>
<td style="width:55"></td></tr>
<tr class="odd">
<td style="width:20">1</td>
<td style="width:50">w00170701</td>
<td style="width:400">同上</td>
<td style="width:60">重复</td>
<td style="width:50">l00146658</td>
<td style="width:300">o</td>
<td style="width:70">否</td>
<td style="width:80">\wuyl_work\unimath\ClearCaseView\w00170701_view4\WL_BESA_LTE_3X_CODE\LBB\UL\PUCCH\src\LBB_UL_PUCCH_ParamCalc.c</td>
<td style="width:70">Defect缺陷</td>
<td style="width:70">Minor一般</td>
<td style="width:100"></td>
<td style="width:80"></td>
<td style="width:80"></td>
<td style="width:55"></td></tr></tbody></table>
 </td></tr>
 <tr><td colspan=4><font size=2>Total 总共:<font color=red size=3>37</font> Records 条记录!</font>
 </td></tr>
</table>
</form>
 </body>
</html>上述的HTML  我从网页中取得了内容,怎么才能变成 一行一行的纯文本。得到下面的这种效果: (空格的话,保留空格,要一次的根据表头,来存入数据库中)()1   s65404    uwDdrDataBeginAddr    在pusch中是按照逻辑顺序放置的,不是按照commtbl里的小区指示放的   接受 l00140929   已修改   是   \LBB\UL\CTRL\src\LBB_UL_CTRL_ADM_PucchMainProc.c    Defect缺陷   Minor一般   

解决方案 »

  1.   

    这个HTML文档结构挺好的,比较规范。直接用HTMLParser这个组件吧,可以很方便的将HTML像 DOM 结构一样进行访问,定位查找节点等。你只需要把id="displaytag1"的<TABLE>节点先找到,然后循环其下所有<tr>节点就行了。把每行<tr>节点中的<td>取出来,拼成Insert语句,就可以写数据库了。
      

  2.   

    自己解析也可以,取<tbody>以后的<tr></tr>之间的信息,再取该信息的<td></td>之间的信息,两层遍历就好了
      

  3.   


    <tr class="odd">
    <td style="width:20">1</td>
    <td style="width:50">s65404</td>
    <td style="width:400">uwDdrDataBeginAddr 在pusch中是按照逻辑顺序放置的,不是按照commtbl里的小区指示放的</td>
    <td style="width:60">接受</td>
    <td style="width:50">l00140929</td>
    <td style="width:300">已修改</td>
    <td style="width:70">是</td>
    <td style="width:80">\LBB\UL\CTRL\src\LBB_UL_CTRL_ADM_PucchMainProc.c</td>
    <td style="width:70">Defect缺陷</td>
    <td style="width:70">Minor一般</td>
    <td style="width:100"></td>
    <td style="width:80"></td>
    <td style="width:80"></td>
    <td style="width:55"></td></tr>
    <tr class="even">取TD中的值,怎么来取? 下面是htmlparesr的一个例子: NodeFilter beginNodeFilter = (NodeFilter)new AndFilter(new TagNameFilter("td"),new HasAttributeFilter("class", ""));                  NodeList nodeList = parser.extractAllNodesThatMatch((org.htmlparser.NodeFilter)beginNodeFilter);                    if (nodeList != null && nodeList.size() > 0) 
                        {                        Node nameNode = nodeList.elementAt(0);                        String name = nameNode.toPlainTextString().trim();                        System.out.println(name);                    }                  parser.reset();
    我试来上述方法,但是只能单个取? 怎么判断这个html页面中有多TR。 TR中的TD值怎么来遍历?
      

  4.   

    用循环来遍历 nodeList,不是仅仅iffor (int i=0;i<nodeList.size();i++) {
      Node nameNode = nodeList.elementAt(i);
      String name = nameNode.toPlainTextString().trim();
      System.out.println(name);
    }
      

  5.   


    我现在这样来弄  NodeFilter beginNodeFilter = new TagNameFilter("td");                  NodeList nodeList = parser.extractAllNodesThatMatch(beginNodeFilter);
                          
                        if (nodeList != null && nodeList.size() > 0) 
                        {
                           
                            for(int i = 1; i < nodeList.size(); i++)
                            {
                               
                                  
                                        Node nameNode = nodeList.elementAt(i);                                    //System.out.println(nameNode.toHtml());
                                        
                                      String name = nameNode.toPlainTextString().trim();
                                        System.out.println(name);
                              
                            }                    }取全部的TD的内容。 不从表头取。 直接内容开始,一共14列。  再add到list<Object[]>中取,我现在有点晕的是,到了第14列 也就是size到了14 怎么能从新开始。  再ADD到list中去
      

  6.   

    你这样filter肯定晕,因为其他地方也有td,应该先filter <tbody>, 然后通过子Node去遍历
    for example
    NodeFilter beginNodeFilter = new TagNameFilter("td");
    NodeList nodeList = parser.extractAllNodesThatMatch(beginNodeFilter);
    if (nodeList != null && nodeList.size() > 0) {
        Node tbody = nodeList.elementsAt(0); //dbody节点
        Node tr = tbody.getFirstChildren(); //获取第一个tr节点
        while (tr != null) { //如果存在tr
            Node td = tr.getFirstChildren(); //获得第一个td
            while (td != null) { //如果存在td
                System.out.println(td.toPlainTextString());
                td = td.getNextSibling(); //获取下一个td
            }
            tr = tr.getNextSibling(); //获取下一个tr
        }    
    }
      

  7.   

    把NodeFilter beginNodeFilter = new TagNameFilter("td");
    改成 NodeFilter beginNodeFilter = new TagNameFilter("tbody");直接拷贝LZ的代码,忘了改了