dom4j的quickstart
我所理解的dom4j就是用来解析XML文档的,XML文档的重要性不言而喻,用过框架的人谁不知道呢,是不是。但是实际上需要我们自己来解析XML文档的应用场景感觉不是很多,毕竟该解析的XML都已经被框架很好的解析了,你在自己搞一遍不是吃饱了撑的么?但是,有时候还真是需要撑一下,如果你想自己来写框架的话,XML的解析就十分重要了。另外一点是,掌握XML解析对后面框架的学习也有一定的好处,不是么?

废话不多说,直接上代码。
解析XML
// 解析XML
public Document parse(String path) throws DocumentException { SAXReader reader = new SAXReader(); // 新建一个SAXReader对象
Document document = reader.read(path); // read()方法有有很多重载的方法,为的是读取不同来源的XML
return document; // 返回解析的XML对象,以DOM树的形式
}
使用迭代器
// 使用迭代器
public void bar(Document document) { Element root = document.getRootElement(); // 由DOM树的对象document获得根元素 // 迭代遍历根节点root的子元素
for (Iterator<Element> i = root.elementIterator(); i.hasNext();) {
Element element = i.next();
} // 迭代遍历根节点root名字为"foo"的子元素
// 根据名字获得迭代器
for(Iterator<Element> i = root.elementIterator("foo"); i.hasNext();) {
Element foo = i.next();
// do something
}
}
使用XPath进行导航
// 使用XPath进行导航
public void bar1(Document document) {
List list = document.selectNodes("//foo/bar"); // selectNodes获得结点都保存在List当中 Node node = document.selectSingleNode("//foo/bar/author"); // 获取单个结点
String name = node.valueOf("@name"); // 获得结点name的属性值 List list2 = document.selectNodes("//a/@href"); // 选取所有超链接的href属性值 // 遍历这个属性
for (Iterator iter = list.iterator(); iter.hasNext();) { Attribute attribute = (Attribute) iter.next();
String url = attribute.getValue();
}
}
快速地遍历
如果想要快速地遍历一个比较大的XML文档树,用下面的方法可以减少迭代器的创建。
// 下面的这个递归还挺别致的
public void treeWalk(Document document) { treeWalk(document.getRootElement()); // 这个尼玛看起来像递归,其实根本不是
} public void treeWalk(Element element) { for(int i=0, size=element.nodeCount(); i<size; i++) { Node node = element.node(i);
if(node instanceof Element) {
treeWalk((Element) node); // 这里才是递归
}
else {
// do something......
}
}
}
创建一个新的XML文档
public Document createDocument() {
Document document = DocumentHelper.createDocument(); // 先返回一个document对象再说
Element root = document.addElement("root"); // 添加根元素
Element author1 = root.addElement("author")
.addAttribute("name", "James") // 添加属性name
.addAttribute("location", "UK") // 添加属性location
.addText("James Strachan"); // 添加标签里面的文本
return document;
}
将XML文档写入到文件中
一个快速和简单的方法将一个Doument对象或者Node对象写入到文件中是通过write()方法
FileWriter out = new FileWriter("foo.xml");
Document.write(out);
字符串和XML的相互转化
// XML转为字符串
Document document = new SAXReader().read("foo.xml");
String text = document.asXML(); // 字符串转为XML
String text2 = "<person><name>James</name></person>";
Document document2 = DocumentHelper.parseText(text2);
dom4j的quickstart的更多相关文章
- java学习笔记DOM4J解析(7)
DOM4J即Document Object Model for Java使用java技术以文档方式解析XML数据的模型. DOM4J是开源组织提供的一个免费的.强大的XML解析工具,如果开发者需要在项 ...
- XML技术之DOM4J解析器
由于DOM技术的解析,存在很多缺陷,比如内存溢出,解析速度慢等问题,所以就出现了DOM4J解析技术,DOM4J技术的出现大大改进了DOM解析技术的缺陷. 使用DOM4J技术解析XML文件的步骤? pu ...
- 四种解析和创建方式(DOM,SAX,DOM4J,JDOM)
一.先导入jar包 DOM基于树形,SAX基于事件,DOM4J和JDOM基于底层API 二.代码如下 1 package com.sxt.test; import java.io.File; impo ...
- dom4j的小例子
1.要解析的xml文件book.xml <?xml version="1.0" encoding="UTF-8"?> <books> & ...
- Dom4J解析技术
前面的话 本文主要讲解有关Dom4j技术和xpath配合下的优化! 目录: 为什么需要Dom4J DOM4J怎么用 xpath怎么配合DOM4J 一 为什么需要Dom4J 一 ...
- Dom4j解析xml文件
dom4j是一个Java的XML API,类似于jdom,用来读取的XML文件,由于它是将文件解析完存放在内存当中的,所以不适合解析大的XML文件,但就方便性和性能方面,一定程度要优于JDK中Domc ...
- java dom4j封装和解析XML
package org.scbit.lsbi.scp.utils; import java.util.ArrayList; import java.util.List; import org.dom4 ...
- xml之dom4j解析
* 使用dom4j解析xml 实例在java520里面 TextDom4j * dom4j,是一个组织,针对xml解析,提供解析器dom4j * dom4j不是javase的一部分,想要使用第一步需要 ...
- 使用dom4j读取xml连接数据库与之单例模式
使用dom4j读取xml ,加入jar包 dom4j-1.6.1.jar jaxen-1.1-beta-6.jar public class XmlConfigReader { //懒汉式,延迟加载 ...
随机推荐
- LoadRunner调用Oracle存储过程
为了测试这个存储过程,我遥了一圈去做这个事情,这里说一下我自己接受到任务和自己开始是怎么想的. 方法一: 一开始我想着可以使用C#直接去调用存储过程,然后用Loadrunner调用C#的dll去测试, ...
- MVC中的成员资格,授权,安全性
使用 Authorize 特性登录 Authorize 是 ASP.NET MVC 自带的默认授权过滤器, 可用来限制用户对操作方法的访问. 保护控制器操作 Authorize 特性在表单身份验证和 ...
- AutoBundle in asp.net mvc 5
using System.Collections.Concurrent; using System.Text; namespace System.Web.Optimization { public s ...
- VitualBox环境下,实现windows系统与虚拟机Linux文件互传
本次环境是Win7系统和ubuntu14(虚拟机) 1.首先需要安装VitualBox的增强功能,如图所示 2.安装完成后重启linux系统,然后在WIN7系统下创建共享文件夹(本文在D盘下创建名为V ...
- 如何发布一个Mac应用并使其成为全球付费榜第一
Readdle公司如何发布第一个 Mac App,并使之成为Mac App Store 全球付费排名第一的 Easy注:自从发布了<程序员如何优雅的挣零花钱?>后,就不断有同学询问怎么做A ...
- javascript获取当前url
在WEB开发中,许多开发者都比较喜欢使用javascript来获取当前url网址,本文就此为大家总结一下比较常用获取URL的javascript实现代码,以下示例是前面为相应实现方法,后面是获取URL ...
- MyEclipse开发Java Web项目步骤
1.安装工具 第一步,下载安装JDK,并配置环境: 配置环境变量步骤: (1)新建变量名:JAVA_HOME,变量值为JDK的安装路径: (2)打开PATH,添加变量值:%JAVA_HOME%\bin ...
- extjs 学习小窍门
一.从form中获取field的三个方法: 1.Ext.getCmp('id'); 2.FormPanel.getForm().findField('id/name'); 3.Ext.get('id/ ...
- 怎样给Myeclipse配置tomcat服务器
http://jingyan.baidu.com/article/4853e1e53465271909f72690.html Meclipse是java Web企业级开发中最流行的工具,java we ...
- 多线程迭代之——LINQ to TaskQuery
平时经常会迭代集合,如果数据多的话会很耗时. 例子: , , }; list.ForEach(a => DoSomething(a)); void DoSomething(int a) { // ...