Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。今天我们就开始Dom4j的学习。

Dom4j的使用

dom4j的使用项目结构如下:

aaarticlea/png;base64,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" alt="" />

Dom4j的下载地址:https://sourceforge.net/projects/dom4j/?source=typ_redirect

一、请求数据,并且保存到本地文件中

private static String fileName = "file/huhxDom.xml";
private static String requestUrl = "http://wcf.open.cnblogs.com/blog/u/huhx/posts/1/3"; // 将url的内容读取到本地文件夹中
public static void writeFileFromUrl(String strUrl) {
HttpURLConnection connection = null;
OutputStream outputStream = null;
InputStream inputStream = null;
try {
URL url = new URL(strUrl);
connection = (HttpURLConnection) url.openConnection();
outputStream = new FileOutputStream(new File(fileName));
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
connection.setRequestMethod("GET"); if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
inputStream = connection.getInputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
outputStream.close();
inputStream.close();
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
}

二、从本地文件中读取数据并解析:

// 解析文件,将内容取出来
public static void readFromFile() {
SAXReader reader = new SAXReader();
try {
Document document = reader.read(new File(fileName));
Element rootElement = document.getRootElement();
// 博客logo的路径
System.out.println("logo: " + rootElement.elementText("logo")); // 网页的标题
System.out.println("title: " + rootElement.elementText("title")); // 发布博客数量
System.out.println("postcount: " + rootElement.elementText("postcount")); // 博客作者信息
Element authorElement = rootElement.element("author");
System.out.println("authorName: " + authorElement.elementText("name"));
System.out.println("authorUri: " + authorElement.elementText("uri"));
System.out.println("-------------------------------------------------------"); // 博客的列表,所有的entry列表
@SuppressWarnings("unchecked")
List<Element> entries = rootElement.elements("entry");
for (Element entry : entries) {
System.out.println("entryId: " + entry.elementText("id"));
System.out.println("entryTitle: " + entry.elementText("title").replaceAll("&gt;", ">"));
System.out.println("entrySummary: " + entry.elementTextTrim("summary"));
System.out.println("entryLink: " + entry.element("link").attributeValue("href"));
System.out.println("***************************************************");
}
} catch (DocumentException e) {
e.printStackTrace();
}
}

三、得到下载的xml文件huhxDom.xml内容如下:

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title type="text">博客园_huhx</title>
<id>uuid:a0d85c23-4321-4ed6-938b-c6924edf816d;id=18947</id>
<updated>2016-06-07T11:40:07+08:00</updated>
<logo>http://pic.cnblogs.com/face/849920/20160316222225.png</logo>
<author>
<name>huhx</name>
<uri>http://www.cnblogs.com/huhx/</uri>
</author>
<postcount>68</postcount>
<entry>
<id>5564873</id>
<title type="text">js插件----&amp;gt;日期控件My97DataPicker的使用</title>
<summary type="text">My97DatePicker是一个更全面,更人性化,并且速度一流的日期选择控件。具有强大的日期范围限制功能;自定义事件和丰富的API库;多语言支持和自定义皮肤支持;跨无限级框架显示和自动选择显示位置。今天我们就开始My97DatePicker的基础使用。
日期控件My97DataPicker 一、将
</summary>
<published>2016-06-07T11:40:00+08:00</published>
<updated>2016-06-07T11:16:35Z</updated>
<author>
<name>huhx</name>
<uri>http://www.cnblogs.com/huhx/</uri>
</author>
<link rel="alternate"
href="http://www.cnblogs.com/huhx/p/jsThirdMy97DataPicker.html" />
<diggs>0</diggs>
<views>7</views>
<comments>0</comments>
</entry>
<entry>
<id>5563444</id>
<title type="text">js插件----&amp;gt;jquery通知插件toastr的使用</title>
<summary type="text">toastr是一款非常棒的基于jquery库的非阻塞通知提示插件,toastr可设定四种通知模式:成功,出错,警告,提示,而提示窗口的位置,动画效果都可以通过能数来设置。toastr需要jquery的支持。今天我们就开始toastr的学习。
jquery通知插件toastr的使用 一、引入jquer
</summary>
<published>2016-06-06T18:50:00+08:00</published>
<updated>2016-06-07T11:16:35Z</updated>
<author>
<name>huhx</name>
<uri>http://www.cnblogs.com/huhx/</uri>
</author>
<link rel="alternate" href="http://www.cnblogs.com/huhx/p/jsThirdToastr.html" />
<diggs>0</diggs>
<views>17</views>
<comments>0</comments>
</entry>
<entry>
<id>5557028</id>
<title type="text">java三方----&amp;gt;html解析jsoup的使用</title>
<summary type="text">jsoup 是一款 Java 的HTML
解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。今天我们就开始jsoup的学习。
jsoup解析html jsoup的主要功能如下: 从一个URL,文件或
</summary>
<published>2016-06-03T17:30:00+08:00</published>
<updated>2016-06-07T11:16:35Z</updated>
<author>
<name>huhx</name>
<uri>http://www.cnblogs.com/huhx/</uri>
</author>
<link rel="alternate" href="http://www.cnblogs.com/huhx/p/javaThirdJsoup.html" />
<diggs>0</diggs>
<views>103</views>
<comments>0</comments>
</entry>
</feed>

四、解析该文件,得到博客的相关信息:

logo: http://pic.cnblogs.com/face/849920/20160316222225.png
title: 博客园_huhx
postcount:
authorName: huhx
authorUri: http://www.cnblogs.com/huhx/
-------------------------------------------------------
entryId:
entryTitle: js插件---->日期控件My97DataPicker的使用
entrySummary: My97DatePicker是一个更全面,更人性化,并且速度一流的日期选择控件。具有强大的日期范围限制功能;自定义事件和丰富的API库;多语言支持和自定义皮肤支持;跨无限级框架显示和自动选择显示位置。今天我们就开始My97DatePicker的基础使用。 日期控件My97DataPicker 一、将
entryLink: http://www.cnblogs.com/huhx/p/jsThirdMy97DataPicker.html
***************************************************
entryId:
entryTitle: js插件---->jquery通知插件toastr的使用
entrySummary: toastr是一款非常棒的基于jquery库的非阻塞通知提示插件,toastr可设定四种通知模式:成功,出错,警告,提示,而提示窗口的位置,动画效果都可以通过能数来设置。toastr需要jquery的支持。今天我们就开始toastr的学习。 jquery通知插件toastr的使用 一、引入jquer
entryLink: http://www.cnblogs.com/huhx/p/jsThirdToastr.html
***************************************************
entryId:
entryTitle: java三方---->html解析jsoup的使用
entrySummary: jsoup 是一款 Java 的HTML 解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于JQuery的操作方法来取出和操作数据。今天我们就开始jsoup的学习。 jsoup解析html jsoup的主要功能如下: 从一个URL,文件或
entryLink: http://www.cnblogs.com/huhx/p/javaThirdJsoup.html
***************************************************

Dom4jTest.java文件的内容:

package com.huhx.dom4j;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class Dom4jTest {
private static String fileName = "file/huhxDom.xml";
private static String requestUrl = "http://wcf.open.cnblogs.com/blog/u/huhx/posts/1/3"; // 将url的内容读取到本地文件夹中
public static void writeFileFromUrl(String strUrl) {
HttpURLConnection connection = null;
OutputStream outputStream = null;
InputStream inputStream = null;
try {
URL url = new URL(strUrl);
connection = (HttpURLConnection) url.openConnection();
outputStream = new FileOutputStream(new File(fileName));
connection.setConnectTimeout(8000);
connection.setReadTimeout(8000);
connection.setRequestMethod("GET"); if (connection.getResponseCode() == HttpURLConnection.HTTP_OK) {
inputStream = connection.getInputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, length);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
outputStream.close();
inputStream.close();
connection.disconnect();
} catch (IOException e) {
e.printStackTrace();
}
}
} // 解析文件,将内容取出来
public static void readFromFile() {
SAXReader reader = new SAXReader();
try {
Document document = reader.read(new File(fileName));
Element rootElement = document.getRootElement();
// 博客logo的路径
System.out.println("logo: " + rootElement.elementText("logo")); // 网页的标题
System.out.println("title: " + rootElement.elementText("title")); // 发布博客数量
System.out.println("postcount: " + rootElement.elementText("postcount")); // 博客作者信息
Element authorElement = rootElement.element("author");
System.out.println("authorName: " + authorElement.elementText("name"));
System.out.println("authorUri: " + authorElement.elementText("uri"));
System.out.println("-------------------------------------------------------"); // 博客的列表
@SuppressWarnings("unchecked")
List<Element> entries = rootElement.elements("entry");
for (Element entry : entries) {
System.out.println("entryId: " + entry.elementText("id"));
System.out.println("entryTitle: " + entry.elementText("title").replaceAll("&gt;", ">"));
System.out.println("entrySummary: " + entry.elementTextTrim("summary"));
System.out.println("entryLink: " + entry.element("link").attributeValue("href"));
System.out.println("***************************************************");
}
} catch (DocumentException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
writeFileFromUrl(requestUrl);
readFromFile();
}
}

对Dom4j的一些源码

以下贴出一些Dom4j的重要方法的源码。

一、elementIterator方法

public Iterator elementIterator(String name) {
List list = elements(name);
return list.iterator();
}

二、elementText方法

public String elementText(String name) {
Element element = element(name);
return (element != null) ? element.getText() : null;
}

三、attributeValue方法

public String attributeValue(String name) {
Attribute attrib = attribute(name); if (attrib == null) {
return null;
} else {
return attrib.getValue();
}
}

四、element方法

public Element element(String name) {
List list = contentList();
int size = list.size(); for (int i = 0; i < size; i++) {
Object object = list.get(i); if (object instanceof Element) {
Element element = (Element) object; if (name.equals(element.getName())) {
return element;
}
}
}
return null;
}

五、elementTextTrim方法

public String elementTextTrim(String name) {
Element element = element(name);
return (element != null) ? element.getTextTrim() : null;
}

element.getTextTrim()方法的说明:

return: the trimmed text value where whitespace is trimmed and normalised into single spaces. This method does not return null.

友情链接

最新文章

  1. win 文字转化为语音
  2. URL 路径长度限制(错误:指定的文件或文件夹名称太长)
  3. request对象详解
  4. oracle sql rank dense_rank row_number fisrt last
  5. c# 字体安装
  6. openssh设置免密码登录远程服务器
  7. JavaScript实现冒泡排序
  8. 成功完成Moses Manual中BaseLineSystem
  9. Hbase Basic Prerequisites
  10. 超链接字体颜色设置(通过html/css的设置方法)
  11. 推荐国内外优秀+免费CDN加速站点及公共cdn加速库
  12. Servlet 异步处理
  13. MySQL show processlist说明
  14. memocache 分布式搭建
  15. sql防止注入
  16. SQLite相关异常
  17. Android--ListView 分割线
  18. ElasticSearch-SQL 安装和使用
  19. Windows10自动更新之后,无线有线都连不上网
  20. 看图说说JVM新生代垃圾收集器

热门文章

  1. m72 gprs模块的应用编写
  2. python 提示 AttributeError: module &#39;json&#39; has no attribute &#39;dumps&#39;
  3. Mac升级yosemite后无法登陆问题
  4. kill 的常用信号
  5. Entity Framework管理实体关系(一):管理一对一关系
  6. WPF教程四:布局之DockPanel面板
  7. CodeIgniter(3.1.4)框架中整合ThinkPHP验证码
  8. jQuery的发展史,你知道吗?
  9. (转) 从ffmpeg中提取出YUV数据
  10. LabVIEW中数组的自动索引