您的位置:首页 > 其它

Dom4j解析XML

2017-03-21 20:16 253 查看
XML文件放在resources目录下
<?xml version="1.0" encoding="UTF-8"?>

<CLASS>
<STUDENT>
<NAME value="name">zhangsan</NAME>
<INTEREST value="interest">basketball</INTEREST>
<INTEREST value="interest">football</INTEREST>
<BIRTH>
<YEAR>1992</YEAR>
<MONTH>02</MONTH>
<DAY>02</DAY>
</BIRTH>
</STUDENT>
<STUDENT>
<NAME value="name">lisi</NAME>
<INTEREST value="interest">music</INTEREST>
<INTEREST value="interest">reading</INTEREST>
<BIRTH>
<YEAR>1990</YEAR>
<MONTH>01</MONTH>
<DAY>01</DAY>
</BIRTH>
</STUDENT>
</CLASS>
使用dom4j首先需要导入dom4j和 jaxen jar包
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>
package com.dom4j.test;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

public class Dom4jTest {
public static void main(String[] args){
SAXReader reader = new SAXReader();
//获取输入流,如果是字符串也可以使用DocumentHelper.parseText()方法解析为Document对象
InputStream is=Dom4jTest.class.getResourceAsStream("/student.xml");
try {
//获取document对象
Document document=reader.read(is);
//获取文档的根节点
Element rootElement=document.getRootElement();
String name=rootElement.getName();
System.out.println("根节点:"+name);

//方法一:迭代根节点的所有子节点
System.out.println("-----获取根节点所有子节点方法一,使用elementIterator()方法-----");
for(Iterator iterator=rootElement.elementIterator();iterator.hasNext();){
Element element=(Element) iterator.next();
System.out.println("根节点子节点:"+element.getName());
}
System.out.println("-----获取根节点所有子节点方法二,使用elements()方法-----");
//方法二:获取根节点所有子节点
List<Element> childList = rootElement.elements();
for(Element element:childList){
System.out.println("根节点子节点:"+element.getName());
}
System.out.println("-----通过路径获取单个节点,使用selectSingleNode()方法-----");
//通过路径获取单个节点(如果有多个,获取第一个)
Node nameNode=document.selectSingleNode("/CLASS/STUDENT/NAME");
System.out.println("NAME节点:"+nameNode.getName());
System.out.println("-----通过路径获取多个节点,使用selectNodes()方法-----");
//通过路径获取多个节点(获取所有的节点)
List<Element> interestList = document.selectNodes("/CLASS/STUDENT/INTEREST");
for (Iterator iterator = interestList.iterator(); iterator.hasNext(); ) {
Element elem = (Element) iterator.next();
//获取元素的value属性值
String value = elem.attributeValue("value");
//获取元素的值
String text = elem.getText();
System.out.println("INTEREST节点:"+elem.getName()+" value属性:"+value+" 文本值:"+text);
}

}catch (Exception e){
System.out.println(e.getMessage());
}

}

}

/**
* 输出结果
* 根节点:CLASS
-----获取根节点所有子节点方法一,使用elementIterator()方法-----
根节点子节点:STUDENT
根节点子节点:STUDENT
-----获取根节点所有子节点方法二,使用elements()方法-----
根节点子节点:STUDENT
根节点子节点:STUDENT
-----通过路径获取单个节点,使用selectSingleNode()方法-----
NAME节点:NAME
-----通过路径获取多个节点,使用selectNodes()方法-----
INTEREST节点:INTEREST value属性:interest 文本值:basketball
INTEREST节点:INTEREST value属性:interest 文本值:football
INTEREST节点:INTEREST value属性:interest 文本值:music
INTEREST节点:INTEREST value属性:interest 文本值:reading
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dom4j