XML解析(四):dom4j解析

概述

      dom4j是解析XML的另一种扩展方式,是JDOM的一种智能分支,合并了许多超出xml文档表示的功能。dom4j大量使用接口,是一个优秀的java XML API,具有性能优异,灵活性好,功能强大和易使用的特点。

示例

dom4j使用时需要导包,这里使用dom4j-1.6.1.jar

XML文件

book.xml

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
   <book id="1">
      <name>java编程思想</name>
      <author>Bruce Eckel</author>
      <year>2015</year>
      <price>79</price>
   </book>
   <book id="2">
      <name>深入理解java虚拟机</name>
      <author>周志明</author>
      <price>40</price>
   </book>
</bookstore>

解析过程

import java.io.File;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class DOM4JXMLTest {

    /**
     * @param args
     * 使用DOM4J方式解析xml文件
     * 
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        //创建SAXReader对象
        SAXReader read=new SAXReader();

        try {
            //通过SAXReader对象的read方法加载xml文件,获取document对象代表整个xml
            //read()方法是重载的,可以从InputStream、File、Url等多种不同的源来读取
            Document document = read.read(new File("src/res/book.xml"));
            //通过document对象获取根结点bookstore
            Element   bookStore=document.getRootElement();
            //通过element对象的elementIterator方法获取迭代器
            Iterator it = bookStore.elementIterator();
            //遍历迭代器
            while(it.hasNext()){
                System.out.println("=============开始遍历某一本书=============");
                Element book=(Element) it.next();
                //获取book的属性
                List<Attribute> bookAttrs= book.attributes();
                for(Attribute attr : bookAttrs){
                    System.out.println("属性名:"+attr.getName()+"属性值:"+attr.getValue());
                }
                Iterator itt=book.elementIterator();
                while(itt.hasNext()){
                    Element child=(Element) itt.next();
                    System.out.println("节点名:"+child.getName()+"---节点值:"+child.getStringValue());
                }
                System.out.println("=============结束遍历某一本书=============");
            }

        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值