【问题标题】:how to read htm file inside a zip file?如何读取 zip 文件中的 htm 文件?
【发布时间】:2012-01-18 20:43:36
【问题描述】:

我有一个包含 Index.htm 的 zip 文件。我应该阅读 Index.htm 的内容并在其中找到一个日期(December 2011)并使用该日期创建一个目录,然后在该目录中提取 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>

【问题讨论】:

    标签: java html file zip


    【解决方案1】:

    试试这个,

    1. 使用java.util.zip包to read the html
    2. 使用一些 html 解析器(我推荐JSoup)来获取日期字符串。 Here is link 这对您的情况会有所帮助。

    获得日期字符串后,创建所需的目录。

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

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

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

    • 使用Following(假设你要清理的字符串是htmlString

      Jsoup.parse(htmlString).text();

    • 使用String的replaceAll()函数去掉&amp;nbsp;

    【讨论】:

    • 当我解析 htm 文件时,我得到  我的字符串之前和结尾。我怎样才能摆脱它?
    • 更新了我的答案以解决您的问题。
    • String date = doc.body().getElementsByClass("Datum").html().toString().replaceAll("&amp;nbsp;","").trim();
    【解决方案2】:

    几个步骤:

    1. 使用 java.util.zip 包并创建一个解压缩流。
    2. 使用 XML 解析器(如 JSoup)遍历节点,然后...
    3. 使用正则表达式或带有日期解析器的正则表达式(例如 SimpleDateFormat)来选择日期。

    这假设您要查找的日期始终在文本节点中。

    【讨论】:

    • 额外步骤 1.5:ZipFile zp = new ZipFile ("xxx.zip"); InputStream in = zp.getInputStream(zp.getEntry("Index.htm"));
    • 我得到这个结果:`  December 2011  ` 我怎么能省略  在我的字符串中?
    【解决方案3】:

    这是我使用的正确结束代码:感谢大家提供有用的提示

    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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-23
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      相关资源
      最近更新 更多