如何导入IE的收藏夹

1.产生这个想法的来源

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

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

 

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

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

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

   

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

 

4. 提取收藏夹数据的Servlet

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

/**
 * 处理收藏夹上传
 * 
 * @author qianjun.liqj
 * 
 */
public class FavoriteServlet extends HttpServlet {

	private final static Logger logger = Logger
			.getLogger(FavoriteServlet.class);

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		this.doPost(req, resp);
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {

		String favString = reader(req.getInputStream());
		logger.info(favString);

	}

	public static String reader(InputStream input) throws IOException{
		
		BufferedReader bReader = new BufferedReader(new InputStreamReader(input));
		StringBuffer sb = new StringBuffer();
		
		String line = bReader.readLine();
		while(line != null) {
			sb.append(line).append("\n");
			line = bReader.readLine();
		}
		return sb.toString();
	}	
	
}

 

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

 

5. 处理收集到的字符串

 

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

import java.io.File;
import java.io.IOException;

import org.htmlcleaner.CleanerProperties;
import org.htmlcleaner.HtmlCleaner;
import org.htmlcleaner.PrettyXmlSerializer;
import org.htmlcleaner.TagNode;
import org.htmlcleaner.XPatherException;

/**
 * 从HTML转化XML
 * @author qianjun.liqj
 *
 */
public class TestHtmlCleaner {

	public void test() throws IOException, XPatherException {

		long start = System.currentTimeMillis();

		HtmlCleaner cleaner = new HtmlCleaner();
		CleanerProperties props = cleaner.getProperties();
		props.setUseCdataForScriptAndStyle(true);
		props.setRecognizeUnicodeChars(true);
		props.setUseEmptyElementTags(true);
		props.setAdvancedXmlEscape(true);
		props.setTranslateSpecialEntities(true);
		props.setBooleanAttributeValues("empty");

		TagNode node = cleaner.clean(new File("C://bookmark.htm"));

		System.out.println("vreme: " + (System.currentTimeMillis() - start));

		new PrettyXmlSerializer(props).writeXmlToFile(node, "c:/out.xml");

		System.out.println("vreme: " + (System.currentTimeMillis() - start));
	}

	public static void main(String[] args) throws IOException, XPatherException {
		TestHtmlCleaner thc = new TestHtmlCleaner();
		thc.test();
	}

}

  

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

有兴趣的可以尝试一下。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值