利用DOM4J API读入XML文件

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值