好记性不如赖笔头…………
XML文件:XmlDemo.xml
<?xml version="1.0" encoding="UTF-8"?>
<Test>
<Test1 >
<node1>TestName</node1>
<node2>TestDemo</node2>
<node3>4</node3>
<node4>5</node4>
</Test1>
<Test1>
<node5>TestName-JAVA</node5>
<node6>TestDemo-1</node6>
<node7>99</node7>
</Test1>
</Test>
读取示例文件:
package com.ckinghan.xml;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class ReaderXmlDemo {
/**
* @描述:读取指定元素的文本内容
* @时间:2017年6月6日17:42:54
* @注意:
* @作者:Ckinghan
* @throws DocumentException
*/
@Test
public void readXml() throws DocumentException{
//创建读取对象
SAXReader reader = new SAXReader();
//读取文件
Document document = reader.read("src/XmlDemo.xml");
//获取文件的根节点
Element root = document.getRootElement();
//获取根结点下的子节点,返回的是一个List集合
List<Element> elements = root.elements();
//获取集合的第二个数据,并获取名称为"书名"的节点,再获取此节点下的文本内容
String text = elements.get(1).element("node5").getText();
//打印获取到的文本内容
System.out.println(text);
}
/**
* @描述:遍历XML文件的所有节点名称
* @时间:2017年6月6日17:45:48
* @注意:
* @作者:Ckinghan
* @throws DocumentException
*/
@Test
public void readXmlNode() throws DocumentException{
//创建读取对象
SAXReader reader = new SAXReader();
//读取文件
Document document = reader.read("src/XmlDemo.xml");
//获取文件的根节点
Element root = document.getRootElement();
//调用readNode方法遍历节点
readNode(root);
}
/**
* @描述:使用递归方式遍历元素节点
* @时间:2017年6月6日17:47:45
* @注意:
* @作者:Ckinghan
* @param element
*/
public void readNode(Element element){
//输出节点名称
System.out.println(element.getName());
//获取element元素的节点数量,并循环获取节点
for(int i = 0; i < element.nodeCount(); i++){
//获取当前循环次数的节点内容
Node node = element.node(i);
//如果当前节点是Element元素节点
if(node instanceof Element){
//再次读取此元素节点内容
readNode((Element)node);
}
}
}
}
执行readXml()方法,结果如下:
TestName-JAVA
执行readXmlNode()方法,结果如下 :
Test
Test1
node1
node2
node3
node4
Test1
node5
node6
node7