使用Dom4j方式来解析XML类型文件

解析XML的方式有很多,今天我们就用Dom4j方式来解析XML文件   我们需要完成以下几个步骤

1、环境准备

(1)下载dom4j-1.6.1.jar

(2)下载junit-4.10.jar

2、温馨提示

解析XML过程是通过获取Document对象,然后继续获取各个节点以及属性等操作,因此获取Document对象是第一步,大体说来有三种方式:

(1)  自己创建Document对象

Document document = DocumentHelper.createDocument();

Element root = document.addElement("students");

其中students是根节点,可以继续添加其他节点等操作

(2)  读取XML文件获取Document对象

//创建SAXReader对象  

SAXReader reader =new SAXReader();  

//读取文件 转换成Document  

Document document = reader.read(new File("XXXX.xml"));  

(3)读取XML文本内容获取Document对象

String xmlStr = "......";  

Document document = DocumentHelper.parseText(xmlStr);  

3、示例

(1)   xml文件内容如下

<姓名>祝汉宇

<年龄>21

<学号>1508300059

<地址>江苏省苏州市昆山巴城镇

<座右铭>要么强大,要么听话  

(2)   解析过程

package com.briup.Dom;  


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 {  

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 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 iterator = node.elementIterator();  

while(iterator.hasNext()) {  

Element e = iterator.next();  

 listNodes(e);  

}  

}  

}  

(3)   解析结果

当前节点的名称:student

当前节点的名称:姓名

姓名:祝汉宇 

当前节点的名称:年龄

年龄:21

当前节点的名称:学号 

学号:1508300059

当前节点的名称:地址

地址:江苏省苏州市昆山巴城镇

当前节点的名称:座右铭  

座右铭:要么强大,要么听话

因为涉及到中文,所以在输出时要设定UTF-8编码,OutputStreamWriter进行设置编码

还有输出格式的问题,在此处使用的是OutputFormat.createPrettyPrint(),输出文档时进行了排版格式化。还有一种是OutputFormat.createCompactFormat()方法,输出内容是一行,没有进行格式化,是紧凑型的输出

已经总结完了,如有不足还望多多指点,谢谢!

你可能感兴趣的:(使用Dom4j方式来解析XML类型文件)