Domj4读取XML文件--实现获取XML文件中所有的标签节点
contact.xml
<?xml version="1.0" encoding="GBK"?>
<contactList>
<contact id="001">
<name>张三</name>
<age>20</age>
<phone>1234567</phone>
<email>1234</email>
<qq>222</qq>
</contact>
<contact id="002">
<name>lisi</name>
<age>20</age>
<phone>1234567</phone>
<email>1234</email>
<qq>222</qq>
</contact>
</contactList>
Demo2.java
实现获取XML文件contact.xml中的所有节点
package gz.itcast.a_dom4j_read;
import java.io.File;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.junit.Test;
/*
* 第二个dome4j读取XML文件内容的例子
* 节点
* 标签
* 属性
* 文本
*/
public class Demo2 {
/*
* 得到节点信息
*
*/
@Test
public void test1() throws Exception{
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("./src/contact.xml"));
//nodeIterator:得到当前节点下的所有子节点对象(不包含孙节点以下的节点)
Iterator<Node> it = doc.nodeIterator();
while(it.hasNext()){
Node node = it.next();//取出元素
String name = node.getName();//得到结点名称
System.out.println(name);
//继续取出其下面的子节点
//自由标签节点才有子节点
//判断当前节点是否是标签节点
if(node instanceof Element){
Element elem = (Element)node;
Iterator<Node> it2 = elem.nodeIterator();
while(it2.hasNext()){
Node n2 = it2.next();
System.out.println(n2.getName());
}
}
}
}
/*
* 遍历XML文档的所有节点
*/
@Test
public void test2() throws Exception{
//读取XML文档,返回Document对象
SAXReader reader = new SAXReader();
Document doc = reader.read(new File("./src/contact.xml"));
//得到根标签
Element rooElem = doc.getRootElement();
getChildNodes(rooElem);
}
/*
* 获取传入的标签下的所有子节点
*/
private void getChildNodes(Element elem) {
System.out.println(elem.getName());
//得到子节点
Iterator<Node> it = elem.nodeIterator();
while(it.hasNext()){
Node node = it.next();
//判断是否是标签节点
if(node instanceof Element){
Element el = (Element)node;
//递归取下面的所有节点
getChildNodes(el);
}
}
}
}