<?xml version="1.0" encoding="UTF-8"?>
<student name="zhangsan">
<hello age="20">hello</hello>
<world>world</world>
</student>
package com.syh.xml.dom4j;
import java.io.File;
import java.util.Iterator;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.DOMReader;
import org.dom4j.io.SAXReader;
/**
* 用 Dom4j 解析(读取)一个 XML 文档
* @author Administrator
*
*/
public class Dom4jTest2 {
public static void main(String[] args) throws Exception {
//构造出 Dom4j 的解析器
SAXReader reader = new SAXReader() ;
// 将文档加载到内存当中 ,并拿到了这个 XML 文档的根节点
Document doc = reader.read(new File("students2.xml")) ;
//获得 XML 文档根元素节点
Element rootEle = doc.getRootElement() ;
System.out.println("root element: " + rootEle.getName());
//注意:这里获取的是子元素,虽然说空白也是一个"孩子",但是它不是子元素,而是文本
List<Element> childrenEle = rootEle.elements() ;
System.out.println(childrenEle.size());
//返回所有以 hello 为元素名的子元素
List<Element> childrenEle2 = rootEle.elements("hello") ;
System.out.println(childrenEle2.size());
//返回给定标签(如:hello)名的第一个元素
Element first = rootEle.element("hello") ;
System.out.println(first.attributeValue("age"));
for(Iterator<Element> iter = rootEle.elementIterator() ; iter.hasNext() ;) {
Element ele = iter.next() ;
System.out.println(ele.attributeValue("age"));
}
System.out.println("-------------------------------------------");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance() ;
DocumentBuilder db = dbf.newDocumentBuilder() ;
org.w3c.dom.Document document = db.parse(new File("students2.xml")) ;
DOMReader dReader = new DOMReader() ;
//将JAXP 的 Document 转换为 dom4j 的 Document
Document d = dReader.read(document) ;
Element rootEle2 = d.getRootElement() ;
System.out.println(rootEle2.getName());
}
}
下面是在控制台上打印的效果:
root element: student
2
1
20
20
null
-------------------------------------------
student