闲着无聊用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是一个强大的Java库,用于处理XML文档,包括读取、写入、修改和解析。本篇文章将深入探讨如何利用DOM4J解析SOAP消息中的元素,以便在实际项目中进行有效的数据提取和操作。 首先,理解SOAP消息的结构至关重要...
- **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成**: 当需要根据业务逻辑动态生成XML文档时,DOM4J的创建功能十分有用。 #### 四、结语 DOM4J作为一...
为了使用这个库,你需要将该jar包添加到项目的类路径中,然后就可以通过DOM4J提供的类和方法来解析和操作XML文件了。 总之,DOM4J是一个功能强大的XML处理库,无论是在小型项目还是大型系统中,都能发挥其优势,...
本篇文章将详细介绍如何使用DOM(Document Object Model)和DOM4j这两种流行的方法来解析XML文件。 首先,DOM是一种标准的W3C推荐的解析XML的方法,它将整个XML文档加载到内存中,形成一个树形结构,便于程序进行...
在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...
1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件
使用 dom4j 解析 XML dom4j 解析 XML dom4j解析xml
DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与流行的Java框架(如Spring和Hibernate)的良好集成。 在解析XML时,DOM4J有两种主要的解析方式:SAX和DOM。SAX是一种基于事件的解析器,适用于处理大型...
在压缩包文件"复件 dom"中,可能包含了示例代码或教程,用于演示如何使用DOM4J和本地DOM解析XML文件。通过查看这些文件,你可以更深入地了解两种方法的具体实现,并在实际项目中选择合适的方式处理XML数据。 总结来...
**DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...
四、DOM4J处理循环节点 在处理包含循环节点的XML时,可以使用迭代器或XPath查询来遍历这些节点。例如,遍历所有`<item>`元素: ```java Element root = document.getRootElement(); List<Element> items = root....
### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J(Document Object Model for XML)是一款用于处理XML文档的轻量级Java库。它提供了一种非常简单且灵活的方式来创建、读取、修改和删除XML文档。DOM4J的主要...
6. **XPath和XSLT转换**:除了基本的XML操作,DOM4J还能配合XPath执行XSLT(eXtensible Stylesheet Language Transformations)转换,实现XML到XML或XML到其他格式(如HTML)的转换。 7. **JAXB集成**:虽然DOM4J...
- DOM4J支持两种解析方式:DOM解析和SAX解析。DOM解析会一次性加载整个XML文档到内存,适合小规模的XML;SAX解析则采用事件驱动,逐行读取,适合处理大规模的XML文件。 - 解析XML的基本步骤:创建解析器工厂,通过...
在使用DOM4J解析XML文件之前,需要导入DOM4J相关的jar包,通常版本为1.6.1。 #### DOM4J常用对象 - **SAXReader**: 用于读取XML文件,并将其转换成Document对象。 - **Document**: XML文档对象树,类似于HTML文档...
在IT行业中,DOM4J和Java加解密是两个重要的技术领域。DOM4J是一个流行的Java库,专门用于处理XML文档,而Java加解密则是指利用Java平台提供的各种加密算法来实现数据的安全传输和存储。 DOM4J解析是处理XML文档的...
本文将深入探讨DOM4J解析XML的基本概念和实践方法。 **1. DOM4J概述** DOM4J是基于DOM模型的,DOM(Document Object Model)是一种W3C标准,用于表示XML文档结构的树型模型。DOM4J在DOM的基础上进行了优化,提供了...
6. **StAX(Streaming API for XML)支持**:DOM4J也支持StAX解析器,这种解析方式结合了SAX的高效和DOM的易用性,可以在处理大型XML文件时节省内存。 7. **与JAXB集成**:DOM4J可以与Java Architecture for XML ...
### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J是一个Java库,用于处理XML文档。它的设计目标是为了提供一个简单、易于使用的API来处理XML文件,同时保持性能上的优势。与Java标准库中的DOM实现相比,DOM4J...