XML解析之—JDOM与DOM4J(更好)

本文介绍并对比了JDOM和DOM4j两种XML解析方式,提供了具体的Java代码示例来演示如何使用这两种API从XML文件中提取数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDOM简化与XML的交互,并且比使用DOM实现更快,JDOM与DOM主要有两方面不同。
1:JDOM使用具体的类而不用接口,实现这些类简化领API,但是也限制领灵活性
2:API使用了大量的Collections类,简化领那些已经熟悉这些类的java开发者的使用

dom4j是一个非常优秀的java Xml API,具有性能优异,功能强大和极端易用的特点(推荐使用)

JDOM解析示例:

public class Jdomparse {
    static Person p=new Person();
    public static void main(String[] args) {
        JdomParseXml();
    }

    private static void JdomParseXml() {
        // 用JDOM解析
        SAXBuilder sax=new SAXBuilder();
        InputStream in=Thread.currentThread().getContextClassLoader().
                getResourceAsStream("day0702XmlDemo/Demo.xml");
        try {
            Document doc = sax.build(in);
            Element root = doc.getRootElement();
            //获取根节点
            List<Element> children = root.getChildren();
            System.out.println(children);
            for(int i=0;i<children.size();i++){
                Element element = children.get(i);
                p.setPerson(element.getAttributeValue("id"));
                List<Element> ch = element.getChildren();
                for(int j=0;j<ch.size();j++){
                    Element per = ch.get(j);
                    String name = per.getName();
                    if("name".equals(name)){
                        p.setName(per.getText());
                    }else if("age".equals(name)){
                        p.setAge(Integer.parseInt(per.getText()));
                    }else if("sex".equals(name)){
                        p.setSex(per.getText());
                    }else if("tel".equals(name)){
                        p.setTel(Integer.parseInt(per.getText()));
                    }

                }
                System.out.println(p.toString());
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

    }
}

DOM4j示例:

public class Dom4JParse {
    private static Person p=new Person();
    public static void main(String[] args) {
        Dom4jParseXml();
    }

    private static void Dom4jParseXml() {
        InputStream  is=Thread.currentThread().getContextClassLoader().getResourceAsStream("day0702XmlDemo/Demo.xml");
        SAXReader reader=new SAXReader();
        try {
            Document doc = reader.read(is);
            //获取更节点
            Element root = doc.getRootElement();
            //获取迭代器
            Iterator<Element> iterator = root.elementIterator();
            while(iterator.hasNext()){
                Element e = iterator.next();
                Iterator<Element> i = e.elementIterator();
                p.setPerson(e.attributeValue("id"));
                while(i.hasNext()){
                    Element per = i.next();
                    String nodeName = per.getName();
                    if("name".equals(nodeName)){
                        p.setName(per.getText());
                    }else if(nodeName.equals("age")){
                        p.setAge(Integer.parseInt(per.getText()));
                    }else if(nodeName.equals("sex")){
                        p.setSex(per.getText());
                    }else if(nodeName.equals("tel")){
                        p.setTel(Integer.parseInt(per.getText()));
                    }
                }
                System.out.println(p.toString());
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

《Android版本更新、热更新》系列课程视频

版本更新6.0,7.0统统搞定!!

热修复不在麻烦,再也不用担心上线后出bug!!

http://edu.youkuaiyun.com/course/detail/6523

http://edu.youkuaiyun.com/course/play/6523/131198

《Kotlin语法基础到实战开发》系列课程视频

http://edu.youkuaiyun.com/course/detail/6409?locationNum=7&fps=1&ref=srch&loc=1

http://edu.youkuaiyun.com/course/play/6409/123752

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值