首先是到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项目的使用,也成功完成了一个小小的应用。

操作XML-dom4j的更多相关文章

  1. 使用dom4j操作XML

    DOM4J介绍 DOM4J是使用Java语言编写的,用于读写及操作XML的一套组件,DOM4J同时具有DOM修改文件的优点和SAX读取快速的优点. DOM4J的使用 首先下载dom4j的JAR包,我用 ...

  2. Strus2第一次课:dom4j操作xml

    先从底层的xml操作技术记录: 当我们新建一个项目,什么架包都没加入的时候,java提供了 org.w3c.dom给我们操作xml里面的元素 import org.w3c.dom.Document; ...

  3. java使用dom4j和XPath解析XML与.net 操作XML小结

    最近研究java的dom4j包,使用 dom4j包来操作了xml 文件 包括三个文件:studentInfo.xml(待解析的xml文件), Dom4jReadExmple.java(解析的主要类), ...

  4. Java操作XML文件 dom4j 篇

    在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它系统的数据交互.今天就来讲一下Java 中使用dom4j来操作XML文件. 我们需要引入的包: //文件包 import java.io. ...

  5. xml解析 使用dom4j操作xml

     使用dom4j操作xml 1 导入 dom4j,的jar包   2 指定要解析的XML文件 SAXReader sr=new SAXReader(); Document document= sr.r ...

  6. Dom4j完整教程,操作XML教程

    目录 1.DOM4J简介 2.XML文档操作1 2.1.读取XML文档: 2.2.获取根节点 2.3.. 新增一个节点以及其下的子节点与数据 2.4. 写入XML文件 2. 5. 遍历xml节点 2. ...

  7. 使用dom4j处理xml操作xml数据

    使用dom4j处理xml操作xml数据 示例代码: public class TestDom4j { public static void main(String[] args) { String x ...

  8. 使用Dom4j操作XML数据

    --------------siwuxie095                             dom4j 是一个非常优秀的 Java XML 的 API, 用来读写 XML 文件 和操作 ...

  9. DOM4J操作XML(包括封装和解析)

    DOM4J操作XML(包括封装和解析) 先来看看dom4j中相应XML的DOM树建立的继承关系 针对于XML标准定义.相应于图2-1列出的内容,dom4j提供了下面实现: 以下给出一个详细事例: pa ...

  10. XML文件操作之dom4j

    能够操作xml的api还是挺多的,DOM也是可以的,不过在此记录下dom4j的使用,感觉确实挺方便的 所需jar包官网地址:http://www.dom4j.org/dom4j-1.6.1/ dom4 ...

随机推荐

  1. [C++]豆知识(1条)

    术语: ctor:constructor,构造函数 dtor:destructor,析构函数 构造函数/析构函数 如果基类要利用多态,则dtor需要声明为virtual,这样在销毁对象时才可以正确调用 ...

  2. Solr报错Index locked for write for core '***'. Solr now longer supports forceful unlocking via 'unlockOnStartup'

    unlockOnStartup 告知 Solr 忽略在多线程环境中用来保护索引的锁定机制.在某些情况下,索引可能会由于不正确的关机或其他错误而一直处于锁定,这就妨碍了添加和更新.将其设置为 true ...

  3. virtualbox 设置windows 于ubuntu虚拟机共享文件夹

    会弹出错误, .. ..还是会有错误, modprobe       -a vboxsf 之后就可以挂载成功了!!

  4. [转] Google 开源 iOS 应用测试工具:EarlGrey

    Google 开源 iOS 应用测试工具:EarlGrey oschina 发布于: 2016年02月18日 (3评) 分享到:    收藏 +53 3月19日,深圳源创会火热报名中,go>&g ...

  5. zoj How Many Sets I(组合计数)

    http://acm.zju.edu.cn/onlinejudge/showProblem.do? problemId=4535 一个集合s有n个元素,求满足这种集合序列{s1,s2....sk}使S ...

  6. [1-7] 把时间当做朋友(李笑来)Chapter 7 【从此时此刻开始改变】 摘录

    大多数事情都需要提前准备,也都可以提前准备.认识到这一点本身就几乎是一切改变的起点. 任何动作演练到一定的次数,就能做到甚至在无意识的情况下都可以准确完成的地步.而他只不过是把这个原理应用到了极致而已 ...

  7. iOS开发-项目的完整重命名方法,图文教程。

    前言:在IOS开发中,有时候想改一下项目的名字,都会遇到很多麻烦.直接改项目名吧,XCODE又不会帮你改所有的名字.总是有很多文件.文件夹或者是项目设置的项.而且都是不能随便改的,有时候改着改着,编译 ...

  8. 动态加载script 和 link

    1.script EventUtil.addHandler(window, "load", function(event){ var script = document.creat ...

  9. javascript学习笔记(三)

    1.与命名空间相关的方法以及属性 2.任何支持style特性的HTML元素在Javascript中都有一个对应的style属性.这个属性是CSSStyleDecalration的实例, 包含着通过HT ...

  10. [原创]FreeSWITCH命令:uuid_dual_transfer

    该篇文章主要介绍FreeSWITCH的API命令uuid_dual_transfer的用法. 命令介绍 该命令用于同时将两条腿进行转移,并且是可以转移到不同的方向. -USAGE: <A-des ...