利用DOM4J API读入XML文件
来源:互联网 发布:15年中国经济数据 编辑:程序博客网 时间:2024/06/06 00:48
import java.io.File;import java.util.Iterator;import org.dom4j.*;import org.dom4j.io.*;/** * 利用DOM4J API读入XML文件. src/book.xml *//** * 读book.xml: * 1)获取到Document对象 * 2)获取到RootElement * 3)获取根元素的子元素集合 * 4)遍历子元素集合,每个元素再取子元素集合 * 5)重复第4步.直到叶子元素. * */public class ReadXMLDemo { public static void main(String[] args) { String filename = "src/day1/book.xml"; readXml(filename); } private static void readXml(String filename) { //定义解析器 //文件的解析有两种方式,DOM(Document Object Model)和SAX( Simple API for XML) //DOM是先装载到内存中,完成后才开始解析,有内存压力大、时间延迟的缺点。 //SAX立即开始解析,适合大文件的解析。 SAXReader reader = new SAXReader(); try { //开始解析,返回文档对象 Document doc = reader.read(new File(filename)); //获取根元素 Element root = doc.getRootElement(); // 迭代 Iterator it = root.elementIterator("武侠小说"); while(it.hasNext()){//如果仍有元素可以迭代,则返回 true。 //武侠小说元素 Element elmt = (Element) it.next(); //书名元素 Element elmtBookname = elmt.element("书名"); //获得书名的内容 String name = elmtBookname.getText(); //获得书名元素中的属性 Iterator attrs = elmtBookname.attributeIterator(); //获得书名元素的属性集合 while(attrs.hasNext()){ //书名元素的每一组属性 Attribute attr = (Attribute)attrs.next(); //打印书名元素的每一组属性 System.out.println(attr.getName()+"="+attr.getValue()); } System.out.println(name); System.out.println(elmt.elementText("出版时间")); System.out.println(elmt.elementText("Email")); System.out.println(elmt.elementText("Phone")); System.out.println(elmt.elementText("价格")); System.out.println(elmt.elementText("简介")); Iterator authorsIt = elmt.elementIterator("作者"); while(authorsIt.hasNext()){ Element author = (Element)authorsIt.next(); System.out.println(author.getText()); } System.out.println("----------------"); } } catch (DocumentException e) { e.printStackTrace(); } }}