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
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); } } } }