一、环境准备java
(1)下载dom4j-1.6.1.jarnode
(2)下载junit-4.10.jar微信
二、舒适提示dom
解析XML过程是经过获取Document对象,而后继续获取各个节点以及属性等操做,所以获取Document对象是第一步,大致说来,有三种方式:编码
(1)本身建立Document对象spa
[java] view plaincopyprint?在CODE上查看代码片派生到个人代码片.net
Document document = DocumentHelper.createDocument(); code
Element root = document.addElement("students"); orm
其中students是根节点,能够继续添加其余节点等操做。
(2)读取XML文件获取Document对象
[java] view plaincopyprint?在CODE上查看代码片派生到个人代码片
//建立SAXReader对象
SAXReader reader = new SAXReader();
//读取文件 转换成Document
Document document = reader.read(new File("XXXX.xml"));
(3)读取XML文本内容获取Document对象
[java] view plaincopyprint?在CODE上查看代码片派生到个人代码片
String xmlStr = "<students>......</students>";
Document document = DocumentHelper.parseText(xmlStr);
三、示例
(1)xml文件内容以下
[html] view plaincopyprint?在CODE上查看代码片派生到个人代码片
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student1 id="001">
<微信公众号>@残缺的孤独</微信公众号>
<学号>20140101</学号>
<地址>北京海淀区</地址>
<座右铭>要么强大,要么听话</座右铭>
</student1>
<student2 id="002">
<新浪微博>@残缺的孤独</新浪微博>
<学号>20140102</学号>
<地址>北京朝阳区</地址>
<座右铭>在哭泣中学会坚强</座右铭>
</student2>
</students>
(2)解析过程
[java] view plaincopyprint?在CODE上查看代码片派生到个人代码片
package cn.com.yy.dom4j;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class Dom4JforXML {
@Test
public void test() throws Exception{
//建立SAXReader对象
SAXReader reader = new SAXReader();
//读取文件 转换成Document
Document document = reader.read(new File("src/cn/com/yy/dom4j/s.xml"));
//获取根节点元素对象
Element root = document.getRootElement();
//遍历
listNodes(root);
}
//遍历当前节点下的全部节点
public void listNodes(Element node){
System.out.println("当前节点的名称:" + node.getName());
//首先获取当前节点的全部属性节点
List<Attribute> list = node.attributes();
//遍历属性节点
for(Attribute attribute : list){
System.out.println("属性"+attribute.getName() +":" + attribute.getValue());
}
//若是当前节点内容不为空,则输出
if(!(node.getTextTrim().equals(""))){
System.out.println( node.getName() + ":" + node.getText());
}
//同时迭代当前节点下面的全部子节点
//使用递归
Iterator<Element> iterator = node.elementIterator();
while(iterator.hasNext()){
Element e = iterator.next();
listNodes(e);
}
}
}
(3)解析结果
[html] view plaincopyprint?在CODE上查看代码片派生到个人代码片
当前节点的名称:students
当前节点的名称:student1
属性id:001
当前节点的名称:微信公众号
微信公众号:@残缺的孤独
当前节点的名称:学号
学号:20140101
当前节点的名称:地址
地址:北京海淀区
当前节点的名称:座右铭
座右铭:要么强大,要么听话
当前节点的名称:student2
属性id:002
当前节点的名称:新浪微博
新浪微博:@残缺的孤独
当前节点的名称:学号
学号:20140102
当前节点的名称:地址
地址:北京朝阳区
当前节点的名称:座右铭
座右铭:在哭泣中学会坚强
四、dom4j操做节点属性
使用dom4j能够操做节点属性,好比添加节点属性、删除节点属性、修改属性值等操做。下面使用dom4j为上述的student1节点删除id属性,新添name属性。
(1)代码示例<