JAVA解析和创建XML文件的四种方法(二)

非官方的两种解析方式DOM4J和JDOM

三、DOM4J

DOM4J解析xml文件

public class DOM4Jtest {
    public static void main(String args[]) {
    	//1、创建SAXReader对象
        SAXReader reader = new SAXReader();
        try {
        	//2、调用read方法直接读取xml  Document为dom4j包下的
            Document document = reader.read(new File("src/XMLtest/test/student.xml"));
            //3、获取根节点  Element为dom4j包下的
            Element rootElement = document.getRootElement();
            //3、生成Iterator对象
            Iterator iterator = rootElement.elementIterator();
            while (iterator.hasNext()){
                Element student = (Element) iterator.next();
                //获取此节点的属性
                List<Attribute> attributes = student.attributes();
                for (Attribute a:attributes){
                    System.out.println(a.getName()+"="+a.getValue());
                }
                //获取此节点的子节点
                Iterator child = student.elementIterator();
                while(child.hasNext()){
                    Element c =(Element) child.next();
                    System.out.println(c.getName()+":"+c.getStringValue());
                }
            }
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }

}

结果
在这里插入图片描述

警告是因为java版本

DOM4J创建xml文件

public class DOM4Jtest {
    public static void main(String args[]) {
    	//1、用DocumentHelper的createDocument方法创建Document
        Document document = DocumentHelper.createDocument();
		//2、使用addElement方法添加元素
        Element students = document.addElement("students");
        Element student = students.addElement("student");
        //3、使用element的方法addAttribute添加结点
        student.addAttribute("id", "1");
        student.addElement("name").addText("小民");
        student.addElement("age").addText("93");
        Element student2 = students.addElement("student");
        student2.addAttribute("id", "2");
        student2.addElement("name").addText("小泽");
        student2.addElement("age").addText("13");

        File f = new File("DOM4J_student.xml");
        OutputFormat format = OutputFormat.createPrettyPrint();
        try {
        	//创建XMLWriter对象用于存储xml文件
            XMLWriter writer = new XMLWriter(new FileOutputStream(f), format);
            //将上面创建的document写入文件中
            writer.write(document);
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

生成文件
在这里插入图片描述

四、JDOM

JDOM解析xml文件

public class JDOMtest {
    public static void main(String args[]) {
    	//对象均为JDOM2包下的
    	//1、创建SAXBuilder对象
        SAXBuilder builder = new SAXBuilder();
        //创建输入流
        InputStream in;
        try {
            in = new FileInputStream("src/XMLtest/test/student.xml");
            //2、使用SAXBuilder对象的builder方法创建Document对象
            Document build = builder.build(in);
            //3、得到根节点
            Element rootElement = build.getRootElement();
            //4、得到根节点的子结点
            List<Element> children = rootElement.getChildren();
            for (Element book:children){
                System.out.println("第"+(children.indexOf(book)+1)+":"+book.getName());
                List<Attribute> attributes = book.getAttributes();
                for(Attribute att:attributes){
                    System.out.println(att.getName()+":"+att.getValue());
                }
                List<Element> bookChildren = book.getChildren();
                for (Element bc:bookChildren){
                    System.out.println(bc.getName()+":"+bc.getValue());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

结果
在这里插入图片描述

JDOM创建xml文件

public class JDOMtest {
    public static void main(String args[]) {
    	//创建新元素students
        Element students = new Element("students");
		//创建student元素
        Element student = new Element("student");
        //设置属性
        student.setAttribute("id","1");
        Element name = new Element("name");
        //设置元素内的text
        name.setText("小民");
        Element age = new Element("age");
        age.setText("93");
        //name和age添加到student元素中
        student.addContent(name).addContent(age);

        Element student2 = new Element("student");
        student.setAttribute("id","1");
        Element name2 = new Element("name");
        name2.setText("小泽");
        Element age2 = new Element("age");
        age2.setText("13");
        student2.addContent(name2).addContent(age2);

        students.addContent(student).addContent(student2);
        //创建Document对象将根节点students放入
        Document document = new Document(students);
        //创建XMLOutputter用于输出到文件
        XMLOutputter xml = new XMLOutputter();
        //设置格式
        Format f = Format.getPrettyFormat();
        xml.setFormat(f);
        try {
        //	输出
            xml.output(document,new FileOutputStream("JDOM_student.xml"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

生成文件
在这里插入图片描述
第三方jar包下载地址
https://dom4j.github.io
http://www.jdom.org/
如果打不开就用这个
https://pan.baidu.com/s/1Iw2lJebhIoz3kd7cg1IK1g提取码:80o8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值