package com.rlovep.dom4j;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.Text;
import org.dom4j.io.SAXReader;
import org.junit.Test;
/**
*
* @ClassName: ReadStu
* @Description: 读取xml的完整内容
* @author peace w_peace@163.com
* @date 30 Sep 2015 7:22:29 pm
*
*/
public class ReadStu {
/**
*
* @Title: readall
* @Description: 测试读取全部的xml内容,原样输出
* @return:void
* @throws
* @author peace w_peace@163.com
*/
@Test
public void readall(){
try {
//创建buffer存储读出来的数据
StringBuffer sb=new StringBuffer();
//读取xml文档
SAXReader reader=new SAXReader();
Document doc = reader.read("./src/student.xml");
//读取传入标签的所有内容
getChildNodes(doc.getRootElement(), sb);
System.out.println(sb);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* @Title: getChildNodes
* @Description: 获得传入标签的所有内容并保存到sb
* @param elem :传入标签
* @param sb :传入的stringbuffer
* @return:void
* @throws
* @author peace w_peace@163.com
*/
private void getChildNodes(Element elem,StringBuffer sb){
//开始标签
sb.append("<"+elem.getName());
//获得标签所有属性
List<Attribute> attributes = elem.attributes();
for(Attribute a:attributes){
if(a!=null){
sb.append(" "+a.getName()+"="+"\""+a.getValue()+"\"");
}
}
sb.append(">");
//获得所有节点
Iterator<Node> nodeIterator = elem.nodeIterator();
while(nodeIterator.hasNext()){
Node next = nodeIterator.next();
//处理标签节点
if(next instanceof Element){
getChildNodes((Element)next, sb);
}
//处理内容节点
if(next instanceof Text){
Text text=(Text)next;
sb.append(text.getText());
}
}
sb.append("</"+elem.getName()+">");
}
}