分享

如何导入IE的收藏夹

 孤傲纯雪 2011-09-21

1.产生这个想法的来源

     由于工作的原因,再加上平时收藏一些网站,收藏夹中的网址越来越多。虽然可以通过归类进行分类管理,但是搜索起来就不方便了。是否可以写一个网站小应用把浏览器中的收藏夹导入到网站中呢?   

     经过分析和实践,是可以处理的,我们先来看看传统的IE导入导出收藏夹的方法。

 

2. 通常导入导出IE中的收藏夹的内容的方法是:

  • IE中菜单“文件” --》 导入导出
  • 选择“导出收藏夹”
  • 选择导出的路径,最后生成文件:bookmark.htm

3. 那我们怎么把IE的收藏夹信息导入到WEB应用中呢?

   

     很简单,传统的导出收藏夹的方式是指定硬盘路径(比如:C:/),我们只要把这个路径换成一个servlet的全路径(比如:http://www./apps/favorite/upload)。 是否就可以待保存的文件流获取到,是不是想怎么做就怎么做了,看看Servlet是怎么处理。

 

4. 提取收藏夹数据的Servlet

 

Java代码 复制代码 收藏代码
  1. import java.io.BufferedReader;   
  2. import java.io.IOException;   
  3. import java.io.InputStream;   
  4. import java.io.InputStreamReader;   
  5.   
  6. import javax.servlet.ServletException;   
  7. import javax.servlet.http.HttpServlet;   
  8. import javax.servlet.http.HttpServletRequest;   
  9. import javax.servlet.http.HttpServletResponse;   
  10.   
  11. import org.apache.log4j.Logger;   
  12.   
  13. /**  
  14.  * 处理收藏夹上传  
  15.  *   
  16.  * @author qianjun.liqj  
  17.  *   
  18.  */  
  19. public class FavoriteServlet extends HttpServlet {   
  20.   
  21.     private final static Logger logger = Logger   
  22.             .getLogger(FavoriteServlet.class);   
  23.   
  24.     @Override  
  25.     protected void doGet(HttpServletRequest req, HttpServletResponse resp)   
  26.             throws ServletException, IOException {   
  27.         this.doPost(req, resp);   
  28.     }   
  29.   
  30.     @Override  
  31.     protected void doPost(HttpServletRequest req, HttpServletResponse resp)   
  32.             throws ServletException, IOException {   
  33.   
  34.         <SPAN style="COLOR: #ff0000">String favString = reader(req.getInputStream());</SPAN>   
  35.         logger.info(favString);   
  36.   
  37.     }   
  38.   
  39.     public static String reader(InputStream input) throws IOException{   
  40.            
  41.         BufferedReader bReader = new BufferedReader(new InputStreamReader(input));   
  42.         StringBuffer sb = new StringBuffer();   
  43.            
  44.         String line = bReader.readLine();   
  45.         while(line != null) {   
  46.             sb.append(line).append("\n");   
  47.             line = bReader.readLine();   
  48.         }   
  49.         return sb.toString();   
  50.     }      
  51.        
  52. }  

 

   红色:favString  就是我们提取到的数据

 

5. 处理收集到的字符串

 

    数据收集到了,该怎么处理? 不知您是否注意到收藏夹的结构和文件夹的结构类似(即多层的文件夹和相应的链接),那我们是否可以把这个信息按照原来的结构进行处理呢?详细见如下代码,首先把HTML--> XML:

Java代码 复制代码 收藏代码
  1. import java.io.File;   
  2. import java.io.IOException;   
  3.   
  4. import org.htmlcleaner.CleanerProperties;   
  5. import org.htmlcleaner.HtmlCleaner;   
  6. import org.htmlcleaner.PrettyXmlSerializer;   
  7. import org.htmlcleaner.TagNode;   
  8. import org.htmlcleaner.XPatherException;   
  9.   
  10. /**  
  11.  * 从HTML转化XML  
  12.  * @author qianjun.liqj  
  13.  *  
  14.  */  
  15. public class TestHtmlCleaner {   
  16.   
  17.     public void test() throws IOException, XPatherException {   
  18.   
  19.         long start = System.currentTimeMillis();   
  20.   
  21.         HtmlCleaner cleaner = new HtmlCleaner();   
  22.         CleanerProperties props = cleaner.getProperties();   
  23.         props.setUseCdataForScriptAndStyle(true);   
  24.         props.setRecognizeUnicodeChars(true);   
  25.         props.setUseEmptyElementTags(true);   
  26.         props.setAdvancedXmlEscape(true);   
  27.         props.setTranslateSpecialEntities(true);   
  28.         props.setBooleanAttributeValues("empty");   
  29.   
  30.         TagNode node = cleaner.clean(new File("C://bookmark.htm"));   
  31.   
  32.         System.out.println("vreme: " + (System.currentTimeMillis() - start));   
  33.   
  34.         new PrettyXmlSerializer(props).writeXmlToFile(node, "c:/out.xml");   
  35.   
  36.         System.out.println("vreme: " + (System.currentTimeMillis() - start));   
  37.     }   
  38.   
  39.     public static void main(String[] args) throws IOException, XPatherException {   
  40.         TestHtmlCleaner thc = new TestHtmlCleaner();   
  41.         thc.test();   
  42.     }   
  43.   
  44. }  

  

   执行上述的程序以后,即可把收集到的字符串转化为XML,那么即可读入XML转化为相应Java对象(类似File的结构)。

有兴趣的可以尝试一下。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多