JAVA 应用 DOM4J 及 JDOM 方式解析 XML

DOM4J方式

DOM4J及 JDOM 是非官方提供的,应用起来比较简洁。

步骤

获得dom4j解析器

SAXReader saxr = new SAXReader();

利用dom4j解析器的read()方法解析xml,获取docuemnt对象

Document docuemnt = saxr.read(new File("src/res/ProfessionalBooks.xml"));

获得xml文件的根节点

Element rootelement = docuemnt.getRootElement();

自己创建通用方法一层一层剥开xml文件

具体代码

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 MyDOM4j {

    /*
     * 创建一个方法一层一成剥开xml文件
     */
    public static void PeelXml(Element rootelement) {
        Iterator<Element> it = rootelement.elementIterator();

        while (it.hasNext()) {
            Element element = it.next();
//          System.out.println("........开始.........");
            System.out.println();
            System.out.print("节点名:"+element.getName()+" ");
            List<Attribute> ats = element.attributes();
            if (ats.size() > 0) {
                for (int i = 0; i < ats.size(); i++) {
                    System.out.print("属性名:" + ats.get(i).getName() + "  " + "属性值:" + ats.get(i).getValue()+" ");
                }
            }
            System.out.print("节点值:"+element.getTextTrim());
//          System.out.println("........结束.........");
            if(element.elementIterator().hasNext()){
                PeelXml(element);
            }
        }
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 获得dom4j解析器
        SAXReader saxr = new SAXReader();
        // 利用dom4j解析器的read()方法解析xml,获取docuemnt对象
        try {
            Document docuemnt = saxr.read(new File("src/res/ProfessionalBooks.xml"));
            // 获得xml文件的根节点
            Element rootelement = docuemnt.getRootElement();
            PeelXml(rootelement);
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

注意:获得节点值时要用getTextTrim()避免输出来有很多空格和换行

JDOM方式

步骤

创建JDOM的解析器,saxbuilder

SAXBuilder saxbuilder = new SAXBuilder();

创建输入流,输入xml文件

 FileInputStream in;
in = new FileInputStream("src/res/ProfessionalBooks.xml");
InputStreamReader ins = new InputStreamReader(in, "UTF-8");

通过saxBuilder的build方法,将输入流加载到saxBuilder中获得Document对象

Document doc = saxbuilder.build(ins);

利用自己写的方法,一层一层剥开xml文件

具体代码

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
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 MyJDOMTest {

    /*
     * 创建一个方法一层一成剥开xml文件
     */
    public static void PeelXml(Element rootelement) {
        List<Element> Childrenelement = rootelement.getChildren();
        for (Element element : Childrenelement) {
            // System.out.println(".......开始.......");
            System.out.println();
            System.out.print("节点名:" + element.getName() + "   ");
            List<Attribute> atli = element.getAttributes();
            if (atli.size() != 0) {

                for (int i = 0; i < atli.size(); i++) {
                    System.out.print("属性名:" + atli.get(i).getName() + "   " + "属性值:" + atli.get(i).getValue() + "  ");

                }
            }

            String value = element.getTextTrim();
            // if (value.getBytes().length > 0) {

            System.out.print("节点值:" + value);

            // }

            // System.out.print(".......结束.......");
            if (element.getChildren().size() > 0) {
                PeelXml(element);
            }

        }
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        // 创建JDOM的解析器,saxbuilder

        SAXBuilder saxbuilder = new SAXBuilder();
        FileInputStream in;
        try {
            in = new FileInputStream("src/res/ProfessionalBooks.xml");
            InputStreamReader ins = new InputStreamReader(in, "UTF-8");
            // 通过saxBuilder的build方法,将输入流加载到saxBuilder中
            Document doc = saxbuilder.build(ins);
            Element rootelement = doc.getRootElement();
            PeelXml(rootelement);
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JDOMException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        // 利用SAXBuilder的build()方法解析xml文件

    }

}

至于xml:http://blog.csdn.net/qq_23473123/article/details/51396153

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值