利用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();  } }}


原创粉丝点击