解析xml文件

本文介绍了XML文件的解析方式,包括DTD和XSD的区别,以及Sun公司的DOM和SAX解析方法。接着详细讲解了JDOM和DOM4J这两个优秀的第三方库,特别是DOM4J在读取和创建XML文件时的便捷操作,如添加属性和美化输出。通过示例展示了DOM4J如何读取和写入XML文件,强调了正确关闭输出流的重要性。
摘要由CSDN通过智能技术生成

dtd是限制文件
xsd是dtd的升级版

Sun公司官方的解析方式:DOM 适用多次访问xml
民间版本SAX 适用于数据量较大

上面两种适用起来都异常复杂,于是第三方进行了封装

JDOM 优秀
JDOM的升级版 DOM4J 非常优秀

DOM4J读取xml文件,解析xml文件需要导入DOM4J的jar包

//创建SAXReader 
 SAXReader reader=new SAXReader();
 //得到Document 
 Document doc=reader.read(new File("src/xml/scores.xml"));

得到Document之后就可以像反射那样使用了

//获取根元素
        Element root=doc.getRootElement();
        System.out.println(root.getName()+"\n");
//获取根元素下所有子元素  迭代器
        Iterator<Element> it=root.elementIterator();

进行一系列操作,Attribute 也可以进行迭代的

while(it.hasNext()){
            //取出元素
            Element e=  (Element)it.next();
            System.out.print(e.getName()+"\t");
            Attribute id=e.attribute("id");
            System.out.println(id.getName()+"="+id.getValue());
            Element name=e.element("name");
            Element lessons=e.element("lessons");
            Element score=e.element("score");
            System.out.println(name.getName()+"="+name.getStringValue());
            System.out.println(lessons.getName()+"="+lessons.getStringValue());
            System.out.println(score.getName()+"="+score.getText());
            System.out.println("-----------------------------------------");
        }

在这里插入图片描述
DOM4J创建xml文件

设置属性 元素.addAttribute

Document doc= DocumentHelper.createDocument();
        Element root=doc.addElement("scores");
        Element student=root.addElement("student");
        student.addAttribute("id","s01");
        Element name=student.addElement("name");
        Element lessons=student.addElement("lessons");
        Element score= student.addElement("score");
         name.addText("周某");
        lessons.addText("线代");
        score.addText("88");

简单输出用doc的write就行,需要创建一个writer输出流,记得关闭流

//        将doc输出到xml文件中,简单输出
        Writer writer=new FileWriter(new File("src/xml/scores2.xml"));
        doc.write(writer);
        writer.close();

但文件中格式是这样的
在这里插入图片描述
用DOM4J自带的输出流,和美化的类OutputFormat ,关闭XMLWriter的同时会关闭FileWriter

//格式良好的输出
        OutputFormat format=OutputFormat.createPrettyPrint();
        XMLWriter writer1=new XMLWriter(new FileWriter(new File("src/xml/scores2.xml")),format);
        writer1.write(doc);
        writer1.close();
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值