使用 DOM4J 解析一个 XML 文档(二)
<?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: student212020null-------------------------------------------student