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 { //懒汉式,延迟加载 ...
随机推荐
- spark读取hdfs上的文件和写入数据到hdfs上面
def main(args: Array[String]): Unit = { val conf = new SparkConf() conf.set("spark.master" ...
- Windows7+VirtualBox+Ubuntu本地开发环境搭建
首先下载相应的VirtualBox和Ubuntu镜像文件 安装Ubuntu操作系统 一 网络设置 将虚拟机的network连接模式设置为Bridge模式,注意无线网卡要与本机的无线网卡名称一致 在wi ...
- css3水波纹效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 手机端页面自适应解决方案—rem布局
只需在页面引入这段原生js代码就可以了 (function (doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientation ...
- PHP使用OPENSSL RSA加密解密数据
加密数据有很多种方法,今天我们来看一下OPENSSL RSA的加密办法. 1.首先得安装php的openssl扩展 php -m | grep openssl 执行以上命令,确保已经安装了openss ...
- 通过Chrome浏览器检测和优化页面
1.访问(http://www.cnblogs.com/viaiu/) 2.点击F12 前两步就在扯淡 3.点击Audits标签,进入测试界面 4.点击按钮开始检测 5.如下图可以进行页面加载资源的详 ...
- 002-添加网站ico图标
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico" me ...
- 使用AutoIT对增加和删除文件属性的实现
编写历程: 前段日子,晚上下班回家,一个舍友问我可不可以将一个目录下的隐藏文件全部显示出来(变成非隐藏文件),我说可以. 之后就开始大刀阔斧的寻找方法来做这件事,上网找,说需要一个Windows下的小 ...
- Android -- 常见控件的小效果
1,EditText控件 ① 修改光标颜色 自定义drawable 创建cursor.xml文件 <?xml version="1.0" encoding="utf ...
- DEV全选多选小技巧
var v1 = bindingSourceBase.DataSource as DataTable; foreach (DataRowView v in v1.DefaultView) { v[&q ...