`
fdqzq
  • 浏览: 8385 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

cyberneko和dom4j解析html

阅读更多
闲着无聊用cyberneko和dom4j写了个解析html图片的小程序,在这里贴出主要代码如下
	public void  testPaseHtml(){
            String url = "http://www.iteye.com/";
            Document document = this.getDoc(url);//获取document
            String gz = "//xmlns:IMG/@src";//xpath匹配
		    List nodes = this.getAttr(document,gz);//获取属性
            String[] photoUrl = this.getUrl(nodes);//获取url
            this.insertPhoto(this.getConn(),photoUrl);//插入图片
	}
	/**
	 * 获取属性
	 * @param document
	 * @param gz
	 * @return
	 */
	public List getAttr(Document document,String gz){
		 Map nameSpaces=new HashMap();
			XPath xpath=new DefaultXPath(gz);
			nameSpaces.put("xmlns","http://www.w3.org/1999/xhtml");
	        xpath.setNamespaceContext(new SimpleNamespaceContext(nameSpaces));
			List nodes=xpath.selectNodes(document);
			return nodes;
	}
	/**
	 * 获取Document
	 * @param url
	 * @return
	 */
public Document getDoc(String url){
	DOMParser parser = new DOMParser();
	 try {
		parser.parse(url);
	} catch (SAXException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	} catch (IOException e1) {
		// TODO Auto-generated catch block
		e1.printStackTrace();
	}
	 org.w3c.dom.Document doc=parser.getDocument(); 

	 //SAXReader reader = new SAXReader();
		DOMReader domReader=new DOMReader();
		Document document =domReader.read(doc);
		return document;
}
/**
 * 获取图片路径
 * @param nodes
 * @return
 */
	public String[] getUrl(List nodes){
		if(nodes==null){
			return null;
		}
		  Iterator iter=nodes.iterator();
		  String[] url = new String[nodes.size()];
	       for(int i=0;iter.hasNext();i++){
	            Attribute attribute=(Attribute)iter.next();
	            url[i] = attribute.getValue();   
	       }
	       return url;
	}
	/**
	 * 获取图片流
	 * @param path
	 * @return
	 */
	public InputStream getInput(String path){
	        URL url = null;
			try {
				url = new URL(path);
			} catch (MalformedURLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
	        URLConnection conn = null;
			try {
				conn = url.openConnection();
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
	        conn.setDoOutput(true); 
	        
	        InputStream inputStream = null;
			try {
				inputStream = conn.getInputStream();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			return inputStream;
	}
	/**
	 * 插入图片入数据库
	 * @param conn
	 * @param photoUrl
	 */
public void insertPhoto(Connection conn,String[] photoUrl){
	       String sql = "insert into photo set photo = ?";
		   PreparedStatement ps;
		 
			try {
			  conn.setAutoCommit(false);
			ps = conn.prepareStatement(sql);
			for(int i=0;i<photoUrl.length;i++){
				if("".equals(photoUrl[i]))continue;
		        InputStream inputStream = this.getInput("http://www.iteye.com/"+photoUrl[i]);
			    ps.setBinaryStream(1, inputStream, inputStream.available());
			    ps.addBatch();
			    inputStream.close();
			}
			ps.executeBatch();
			conn.commit();
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
}
分享到:
评论

相关推荐

    利用DOM4J解析SOAP的简单示例

    DOM4J是一个强大的Java库,用于处理XML文档,包括读取、写入、修改和解析。本篇文章将深入探讨如何利用DOM4J解析SOAP消息中的元素,以便在实际项目中进行有效的数据提取和操作。 首先,理解SOAP消息的结构至关重要...

    dom4j解析xml详解

    - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成**: 当需要根据业务逻辑动态生成XML文档时,DOM4J的创建功能十分有用。 #### 四、结语 DOM4J作为一...

    dom4j解析xml文件的压缩包

    为了使用这个库,你需要将该jar包添加到项目的类路径中,然后就可以通过DOM4J提供的类和方法来解析和操作XML文件了。 总之,DOM4J是一个功能强大的XML处理库,无论是在小型项目还是大型系统中,都能发挥其优势,...

    分别使用DOM和DOM4j解析XML文件

    本篇文章将详细介绍如何使用DOM(Document Object Model)和DOM4j这两种流行的方法来解析XML文件。 首先,DOM是一种标准的W3C推荐的解析XML的方法,它将整个XML文档加载到内存中,形成一个树形结构,便于程序进行...

    dom4j 解析(读取) xml 节点数据

    在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...

    dom4j 解析写入xml

    1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件

    使用 dom4j 解析 XML

    使用 dom4j 解析 XML dom4j 解析 XML dom4j解析xml

    DOM4J 解析XML

    DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与流行的Java框架(如Spring和Hibernate)的良好集成。 在解析XML时,DOM4J有两种主要的解析方式:SAX和DOM。SAX是一种基于事件的解析器,适用于处理大型...

    使用dom4j 和本地dom 解析xml 文件

    在压缩包文件"复件 dom"中,可能包含了示例代码或教程,用于演示如何使用DOM4J和本地DOM解析XML文件。通过查看这些文件,你可以更深入地了解两种方法的具体实现,并在实际项目中选择合适的方式处理XML数据。 总结来...

    dom4j---xml解析jar包

    **DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...

    xmldom4j解析

    四、DOM4J处理循环节点 在处理包含循环节点的XML时,可以使用迭代器或XPath查询来遍历这些节点。例如,遍历所有`&lt;item&gt;`元素: ```java Element root = document.getRootElement(); List&lt;Element&gt; items = root....

    dom4j解析xml.txt

    ### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J(Document Object Model for XML)是一款用于处理XML文档的轻量级Java库。它提供了一种非常简单且灵活的方式来创建、读取、修改和删除XML文档。DOM4J的主要...

    dom4j解析XML所需jar包

    6. **XPath和XSLT转换**:除了基本的XML操作,DOM4J还能配合XPath执行XSLT(eXtensible Stylesheet Language Transformations)转换,实现XML到XML或XML到其他格式(如HTML)的转换。 7. **JAXB集成**:虽然DOM4J...

    java dom4j解析xml

    - DOM4J支持两种解析方式:DOM解析和SAX解析。DOM解析会一次性加载整个XML文档到内存,适合小规模的XML;SAX解析则采用事件驱动,逐行读取,适合处理大规模的XML文件。 - 解析XML的基本步骤:创建解析器工厂,通过...

    DOM4J解析XML代码

    在使用DOM4J解析XML文件之前,需要导入DOM4J相关的jar包,通常版本为1.6.1。 #### DOM4J常用对象 - **SAXReader**: 用于读取XML文件,并将其转换成Document对象。 - **Document**: XML文档对象树,类似于HTML文档...

    dom4j解析和java加解密

    在IT行业中,DOM4J和Java加解密是两个重要的技术领域。DOM4J是一个流行的Java库,专门用于处理XML文档,而Java加解密则是指利用Java平台提供的各种加密算法来实现数据的安全传输和存储。 DOM4J解析是处理XML文档的...

    dom4j解析

    本文将深入探讨DOM4J解析XML的基本概念和实践方法。 **1. DOM4J概述** DOM4J是基于DOM模型的,DOM(Document Object Model)是一种W3C标准,用于表示XML文档结构的树型模型。DOM4J在DOM的基础上进行了优化,提供了...

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    6. **StAX(Streaming API for XML)支持**:DOM4J也支持StAX解析器,这种解析方式结合了SAX的高效和DOM的易用性,可以在处理大型XML文件时节省内存。 7. **与JAXB集成**:DOM4J可以与Java Architecture for XML ...

    dom4j解析xml

    ### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J是一个Java库,用于处理XML文档。它的设计目标是为了提供一个简单、易于使用的API来处理XML文件,同时保持性能上的优势。与Java标准库中的DOM实现相比,DOM4J...

Global site tag (gtag.js) - Google Analytics