使用 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: student
2
1
20
20
null
-------------------------------------------
student

你可能感兴趣的:(xml)