如何在zip文件中读取htm文件?

时间:2012-01-16 15:12:23

标签: java html file zip

我有一个包含Index.htm的zip文件。我应该阅读Index.htm的内容并在其中找到一个日期( 2011年12月)并创建一个具有此日期的目录,然后在该目录中提取zip文件。

这是html文件:

<HTML>    
  <HEAD></HEAD>    
  <BODY>    
  <A Name="TopOfPage"></A>    
  <TABLE Width="100%" Border="0" CellPadding="0" CellSpacing="0">    
   <TR> 
     <TD Width="30%"><A HRef="HeaderTxt/HetBCFI.htm">Het B.C.F.I.</A></TD>    
   </TR>      
  </TABLE>    
  <TABLE Width="100%" Border="0" CellPadding="0" CellSpacing="0">
   <TR> 
    <TD RowSpan="2" Width="10"></TD>
    <TD Width="70%"><STRONG><FONT Face="Arial" Size="2">Gecommentarieerd   Geneesmiddelenrepertorium</FONT></STRONG></TD> 
    <TD Width="29%" Align="Right" Class= "Datum">&nbsp;
   December 2011&nbsp;&nbsp;
  </TD>
  <TD Rowspan="2" Width="10"></TD>
 </TR>
</TABLE> </BODY> </HTML>

3 个答案:

答案 0 :(得分:3)

试试这个,

  1. 使用java.util.zip包to read the html
  2. 使用一些html解析器(我建议JSoup)来获取日期字符串。 Here is link这对你的情况有帮助。
  3. 获得日期字符串后,请创建所需的目录。

    编辑:要删除&nbsp;,您可以执行以下操作之一

    • 使用包含&nbsp;的字符串创建另一个文档元素并执行以下操作

      document.select(":containsOwn(\u00a0)").remove();(取自here

    • 使用以下(假设您要清理的字符串为htmlString

      Jsoup.parse(htmlString).text();

    • 使用String的replaceAll()函数删除&nbsp;

答案 1 :(得分:2)

几个步骤:

  1. 使用java.util.zip包并创建解压缩的流。
  2. 使用XML解析器(如JSoup)来遍历节点,然后......
  3. 使用正则表达式或带有日期解析器的正则表达式(如SimpleDateFormat)来选择日期。
  4. 这假设您要查找的日期始终位于文本节点中。

答案 2 :(得分:1)

这是我使用的正确的最终代码:感谢所有人提供有用的提示

public static String getDateWithinHtmlInsideZipFile(File archive) {
      ZipFile zp = new ZipFile(archive);
      InputStream in = zp.getInputStream (zp.getEntry ("Index.htm"));

      Document doc = Jsoup.parse(in, "UTF-8", "");

    return doc.body().getElementsByClass("Datum").text().trim();
}