关于dom4j在maven中的使用
在maven中添加dom4j的依赖, (如何使用eclipse构建maven项目, 这里就不在赘述)
<!-- https://mvnrepository.com/artifact/org.dom4j/dom4j -->
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.0.0</version>
</dependency>
这里指的注意的是, 如果引入的版本较低, 可能不能使用dom4j的包, 我之前引入的是1.6.1版本, 就是提示不能用, 后来经过分析, 断定是引入版本过低导致。
下面是个人测试使用的案例, 大家可以直接拷贝使用, 使用工具是eclipse. package com.test; import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Iterator;
import java.util.List; import org.dom4j.Attribute;
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定义了几个Java类。以下是最常见的类:
Document - 表示整个XML文档。文档Document对象是通常被称为DOM树。
Element - 表示一个XML元素。 Element对象有方法来操作其子元素,它的文本,属性和名称空间。
Attribute - 表示元素的属性。属性有方法来获取和设置属性的值。它有父节点和属性类型。
Node - 代表元素,属性或处理指令 常见DOM4J的方法
当使用DOM4J,还有经常用到的几种方法:
SAXReader.read(xmlSource)() - 构建XML源的DOM4J文档。
Document.getRootElement() - 得到的XML的根元素。
Element.node(index) - 获得在元素特定索引XML节点。
Element.attributes() - 获取一个元素的所有属性。
Node.valueOf(@Name) - 得到元件的给定名称的属性的值。
*
* */ public class ParseXml { public void readXML() throws Exception {
// 创建saxReader对象
SAXReader reader = new SAXReader();
// 通过read方法读取一个文件 转换成Document对象
Document document = reader.read(new File("src/test1.xml"));
// 获取根节点元素对象
Element node = document.getRootElement();
// 遍历所有的元素节点
listNodes(node);
elementMethod(node);
} public void createXML() throws Exception {
Document document = DocumentHelper.createDocument();
Element root = document.addElement("cars");
Element supercarElement = root.addElement("supercars").addAttribute("company", "Ferrai");
supercarElement.addElement("carname").addAttribute("type", "FerrariAttr").addText("FerrariText");
supercarElement.addElement("carname").addAttribute("type", "sportsAttr").addText("sportsText");
// 写入到一个新的文件中
writer(document);
} /**
* 把document对象写入新的文件
*
* @param document
* @throws Exception
*/
public void writer(Document document) throws Exception {
// 紧凑的格式
// OutputFormat format = OutputFormat.createCompactFormat();
// 排版缩进的格式
OutputFormat format = OutputFormat.createPrettyPrint();
// 设置编码
format.setEncoding("UTF-8");
// 创建XMLWriter对象,指定了写出文件及编码格式
// XMLWriter writer = new XMLWriter(new FileWriter(new
// File("src//a.xml")),format);
XMLWriter writer = new XMLWriter(
new OutputStreamWriter(new FileOutputStream(new File("src//test1.xml")), "UTF-8"), format);
// 写入
writer.write(document);
// 立即写入
writer.flush();
// 关闭操作
writer.close();
} /**
* 遍历当前节点元素下面的所有(元素的)子节点
*
* @param node
*/
public void listNodes(Element node) {
System.out.println("当前节点的名称::" + node.getName());
// 获取当前节点的所有属性节点
List<Attribute> list = node.attributes();
// 遍历属性节点
for (Attribute attr : list) {
System.out.println(attr.getText() + "-----" + attr.getName() + "---" + attr.getValue());
} if (!(node.getTextTrim().equals(""))) {
System.out.println("文本内容::::" + node.getText());
} // 当前节点下面子节点迭代器
Iterator<Element> it = node.elementIterator();
// 遍历
while (it.hasNext()) {
// 获取某个子节点对象
Element e = it.next();
// 对子节点进行遍历
listNodes(e);
}
} /**
*
* @param node
*/
public void elementMethod(Element node) {
// 获取node节点中,子节点的元素名称为supercars的元素节点。
Element e = node.element("supercars");
// 获取supercars元素节点中,子节点为carname的元素节点(可以看到只能获取第一个carname元素节点)
Element carname = e.element("carname"); System.out.println(e.getName() + "----" + carname.getText()); // 获取supercars这个元素节点 中,所有子节点名称为carname元素的节点 。 List<Element> carnames = e.elements("carname");
for (Element cname : carnames) {
System.out.println(cname.getText());
} // 获取supercars这个元素节点 所有元素的子节点。
List<Element> elements = e.elements(); for (Element el : elements) {
System.out.println(el.getText());
} } }
关于dom4j在maven中的使用的更多相关文章
- 理解Maven中的SNAPSHOT版本和正式版本
		
Maven中建立的依赖管理方式基本已成为Java语言依赖管理的事实标准,Maven的替代者Gradle也基本沿用了Maven的依赖管理机制.在Maven依赖管理中,唯一标识一个依赖项是由该依赖项的三个 ...
 - maven 中snapshot版本和release版本的区别
		
maven中的仓库分为两种,snapshot快照仓库和release发布仓库.snapshot快照仓库用于保存开发过程中的不稳定版本,release正式仓库则是用来保存稳定的发行版本.定义一个组件/模 ...
 - IDEA使用maven中tomcat插件启动项目乱码问题
		
今天用IDEA来启动项目,使用的是maven中的tomcat7插件,正常启动后,再页面操作新增或修改数据时,发生了诡异的事, 中文保存后全部乱码...顿时不淡定了,接着就开始排查原因 首先检查IDEA ...
 - IntelliJ IDEA14.1中java项目Maven中没有配置JDK时的问题
		
在IntelliJ IDEA 14.1中使用在java项目中使用Maven时当没有在Maven中配置JDK编译版本.源码版本时,IDEA将默认的编译版本.源码版本设置为jdk5. 在IDEA中Lang ...
 - maven中snapshot快照库和release发布库的区别和作用
		
在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次.我们知道,maven的依赖管理是基于版本管理的, ...
 - 如何在maven中添加jar包
		
Maven 中央仓库地址: 1. http://www.sonatype.org/nexus/ 2. http://mvnrepository.com/ (本人推荐仓库) 3. http://repo ...
 - Maven中的dependencyManagement 意义
		
1.在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器. 2.pom.xml文件中,jar的版本判断的两种途径 1:如果dependenci ...
 - maven中Rhino classes (js.jar) not found - Javascript disabled的处理
		
想使用单元测试 来测一下服务请求,于是想到了使用Junit,查了一下,决定使用 HttpUnit 来发送请求 于是在maven中引入了 <dependency> <groupId&g ...
 - 在Maven中设置Nexus私有服务为中央工厂(repository)
		
原文:http://blog.csdn.net/mexican_jacky/article/details/50275695 nexus中的仓库列表 第一种方式: <repositories&g ...
 
随机推荐
- mahout 实现canopy
			
环境: mahout-0.8 hadoop-1.1.2 ubuntu-12.04 理论这里就不说了,直接上实例: 下面举一个例子. 数据准备: canopy.dat文件,COPY到HDFS上,文件内容 ...
 - R 数据类型
			
c()功能函数,产数据用 向量:一维数组,要求存放的数据类型一致 矩阵:二维数组,要求存放的数据类型一致,用通过matrix函数创建 数组:维度超过二维时建议用数组,用可araay函数创建 数据框:相 ...
 - 【MySQL】MySQL悲观锁 + 事物 + for update 解决普通流量并发的问题
			
使用mysql悲观锁解决并发问题 最近学习了一下数据库的悲观锁和乐观锁,根据自己的理解和网上参考资料总结如下: 悲观锁介绍(百科): 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事 ...
 - ArrayList反转
			
Collections.reverse(arrayList); 下面看例子: import java.util.ArrayList;import java.util.Collections; publ ...
 - “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统   第五篇(用户管理之“用户权限分配”)
			
一.在做权限分配之前,首先先了解“ZTree”这个插件,我的这个系统没有用Jquery-EasyUI的Tree.用的是”ZTree“朋友们可以试试,也很强大.点击下载ZTree插件. 1. ...
 - sqlserver2012——SqlCommand创建对象的三种方法
			
1.使用不带参构造函数 SqlCommand cmd = new SqlCommand(); cmd.Connection = SqlConnnection对象: cmd.CommandText=Sq ...
 - iscsi使用教程(上)
			
服务端 服务器环境 已经安装过qemu-img的32位ubuntu $ uname -a Linux ubuntu-virtual-machine 3.13.0-46-generic #76-Ubun ...
 - [C++]C,C++中使用可变参数
			
可变参数即表示参数个数可以变化,可多可少,也表示参数的类型也可以变化,可以是int,double还可以是char*,类,结构体等等.可变参数是实现printf(),sprintf()等函数的关键之处, ...
 - 消息队列RabbitMQ、缓存数据库Redis
			
1.RabbitMQ消息队列 1.1 RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中 ...
 - linker 错误解决办法 地图