XML解析(三):JDOM解析

概述

      JDOM是一种非官方解析XML的java工具包,是java基础解析方式的一种扩展。利用java语言的特性,将DOM和SAX的功能有效的结合起来。因此,JDOM可以看做是用java语言读、写、操作XML的新API函数。

      在JDOM中,XML元素就是Element实例,XML属性就是Attribute的实例,XML文档本身就是Document的实例。

JDOM的特点:
1. 仅使用具体类而不使用接口,API大量使用了Java集合类。
2. JDOM自身不包含解析器,使用SAX解析器生成 JDOM Document

示例

JDOM是一种java工具包,使用时需要导包,这里使用jdom-2.0.5.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>

创建JDOMXMLTest类

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

public class JDOMXMLTest {

    /**
     * @param args
     * JDOM方式解析XML
     */
    public static void main(String[] args) throws FileNotFoundException {
        // TODO Auto-generated method stub

        //1.创建SaxBuilder对象
        SAXBuilder saxBuilder=new SAXBuilder();
        InputStream in;
        try {
            //2.创建一个输入流,将xml文件加载到输入流中
            in = new FileInputStream("src/res/book.xml");
            //3.通过saxBuilder的build方法,将输入流加载到saxBuilder中  返回一个doucument对象
            Document document = saxBuilder.build(in);
            //通过document对象获取根结点
            Element rootElement=document.getRootElement();
            //获取根结点下的子结点
            List<Element> bookList = rootElement.getChildren();
            //遍历解析
            for(Element book :bookList){
                System.out.println("=============开始遍历第"+(bookList.indexOf(book)+1)+"本书=============");
                //解析book的属性
                List<Attribute> attrList=book.getAttributes();
                for(Attribute attr:attrList){
                    String attrName = attr.getName();//获取属性值
                    String attrValue = attr.getValue();//获取实际值的文本
                    System.out.println("属性名: "+attrName+"---属性值:"+attrValue);
                }
                //对book节点的子结点的节点名和节点值
                List<Element> bookChilds = book.getChildren();
                for(Element child: bookChilds){
                    System.out.println("节点名:"+child.getName()+"--节点值:"+child.getValue());
                }
                System.out.println("=============结束遍历第"+(bookList.indexOf(book)+1)+"本书=============");
            }

        } catch (JDOMException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException 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、付费专栏及课程。

余额充值