文档章节

操作XML-dom4j

gyouxu
 gyouxu
发布于 2014/08/26 09:48
字数 718
阅读 10
收藏 0

首先是到dom4j的官网dom4j文件包,下载之后解压如下所示。

在根目录中,找到dom4j-1.6.1jar包,加入到eclipse中的lib文件下,最后build path一下,即可使用相关的方法。

1、创建XML文档

1.1创建XML文档对象

使用DocumentHelper类中的createDocument()方法,创建一个XML文档对象,代码如下:

Document document = DocumentHelper.createDocument();

另外也可以使用DocumentFactory对象也可以创建一个XML文档对象。

DocumentFactory documentFactory=DocumentFactory.getInstance();

document=documentFactory.createDocument();

1.2创建根节点

(1)使用DocumentHelper对象的createElement()方法创建一个普通的节点信息。

public static Element createElement(String name)

(2)Document对象的setRootElement()方法

public void setRootElement(Element element) ;

例如:创建一个值 包括根节点的XmL文档的具体代码

  Document document = DocumentHelper.createDocument();
  Element rootElement = DocumentHelper.createElement("person");
  document.setRootElement(rootElement);
  rootElement.addComment("这是根节点");//添加注释

2、解析XML文档

(1)、加载XML文件

SAXReader saxReader =new SAXReader();

document = saxReader.read(new File(filename));

(2)、获取根节点

Element root = dom.getRootElement();

(3)、遍历节点信息

for (Iterator i =root.elementIterator(); i.hasNext();) {

  Element el =(Element) i.next();

  if(catNameEn.equals(el.elementTextTrim("engName"))){

    flag = false;

    break;

  }

}

 下面就以dom4j解析本博客的文章信息,

首先分析网页的xml文件格式,打开本博客的“订阅”链接,在网页显示xml文件格式如下:

 

然后在打开entry节点,如下所示:

分析一下:

1、要读取网页数据,首先需要创建一个URL对象,用本博客的“订阅”链接创建URL对象,代码如下:

URL url = new URL("http://feed.cnblogs.com/blog/u/120107/rss");
SAXReader reader = new SAXReader();
Document document = reader.read(url);

2、获取XML文档的根节点,确定根节点的数量,然后遍历内容,代码如下:

Element rootElement = document.getRootElement();
List list_item = rootElement.elements("entry");

3、遍历XML文件的数据,代码如下:

if (list_item.size() > 0) {
list = new ArrayList<Object>();
}
for (int i = 0; i < list_item.size(); i++) {
Element item = (Element) list_item.get(i);
System.out.println("id:" + item.element("id").getText());
System.out.println("title:" + item.element("title").getText());
System.out.println("summary:" + item.element("summary").getText());
System.out.println("published:" + item.element("published").getText());
System.out.println("updated:" + item.element("updated").getText());
System.out.println("name:" + item.element("author").element("name").getText());
System.out.println("uri:" + item.element("author").element("uri").getText());
System.out.println("************************");
System.out.println();
System.out.println();
System.out.println();
System.out.println();
}

最后整个测试代码如下:

import java.io.File;
import java.io.FileWriter;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/***
 * 使用dom4j开源项目,需要引入dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar包
 * 
 * @author ouxu
 *
 */
public class XmlHelper {
public void readXmlByUrl() throws Exception {
		List<Object> list;
		URL url = new URL("http://feed.cnblogs.com/blog/u/120107/rss");
		SAXReader reader = new SAXReader();
		Document document = reader.read(url);
		Element rootElement = document.getRootElement();
		List list_item = rootElement.elements("entry");
		if (list_item.size() > 0) {
			list = new ArrayList<Object>();
		}
		for (int i = 0; i < list_item.size(); i++) {
			Element item = (Element) list_item.get(i);
			System.out.println("id:" + item.element("id").getText());
			System.out.println("title:" + item.element("title").getText());
			System.out.println("summary:" + item.element("summary").getText());
			System.out.println("published:" + item.element("published").getText());
			System.out.println("updated:" + item.element("updated").getText());
			System.out.println("name:" + item.element("author").element("name").getText());
			System.out.println("uri:" + item.element("author").element("uri").getText());
			System.out.println("************************");
			System.out.println();
			System.out.println();
			System.out.println();
			System.out.println();
		}

	}

	public static void main(String[] args) {
		try {
			new XmlHelper().readXmlByUrl();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

测试代码,运行通过,部分结果如下(由于数据比较多,一屏数据显示不完)

 ok,目前,学习了dom4j项目的使用,也成功完成了一个小小的应用。

© 著作权归作者所有

gyouxu
粉丝 1
博文 24
码字总数 14526
作品 0
杭州
程序员
私信 提问
Dom4j解析器_解析xml文档

目录 1、Dom4J是什么 2、使用dom4j解析xml 3、使用dom4j查询xml 4、使用dom4j实现 添加操作 5、使用dom4j实现在 特定位置 添加元素 6、使用dom4j实现 修改节点的操作 7、使用dom4j实现 删除节...

Eric-Zhou
02/28
12
0
java解析xml -- DOM4J JDOM DOM SAX 之比较

DOM4J http://dom4j.sourceforge.net 虽然DOM4J代表了完全独立的开发结果,但最初,它是JDOM的一种智能分支。它合并了许多超出基本XML文档表示的功能,包括集成的XPath支持、XML Schema支持以...

o0江湖郎中0o
2014/01/07
227
2
dom4j的使用及常见问题

相信作为一个开发人员应该对XML与JSON 非常熟悉。关于两者的介绍与区别网上已经有很多资料,java对于XML的解析也有很多工具包,主要解析的方式有三种: 1.DOM解析方式:适用于解析小型XML文件...

Half_candy
2015/09/20
368
0
Dom4j的使用(全而好的文章)

Dom4j 使用简介 作者:冰云 icecloud(AT)sina.com 时间:2003.12.15 DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for w...

倚小丁
2010/11/02
1K
0
常用框架(Dom4j)

常用框架(Dom4j) 1、XML 基本的定义 使用XML可以有效的实现对象到字符串的转换 基于Java处理XML dom4j-->不是j2se所自带的,需要通过网络下载这个文件包才能使用。 dom4j的安装 1、下载dom4j...

pmos
2016/07/27
29
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
169
8
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0
详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱。就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和...

OBKoro1
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部