您的位置:首页 > 编程语言 > Java开发

JAVA读取XML之SAX方式

2017-06-06 18:01 369 查看
好记性不如赖笔头…………

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息