Java基础-SAXReader和XMLWriter对象对xml文件的操作

Java基础-SAXReader和XMLWriter对象对xml文件的操作

1.xml简介

可扩展标记语言,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统 一的方法来描述和交换独立于应用程序或供应商的结构化数据。是Internet环境中 跨平台的、依赖于内容的技术,也是当今处理分布式结构信息的有效工具。早在1998年,W3C就发布了XML1.0规范,使用它来简化Internet的文档信息传输。

作用:

  • 存储数据
  • 传输数据

举例:

<?xml version="1.0" encoding="UTF-8" ?>
<families>
    <family>
        <person>
            <name>父亲</name>
            <age>36</age>
        </person>
        <person>
            <name>母亲</name>
            <age>35</age>
        </person>
    </family>
    <family>
        <person>
            <name>父亲</name>
            <age>36</age>
        </person>
        <person>
            <name>母亲</name>
            <age>35</age>
        </person>
    </family>
</families>

2.xml解析

  • 解析方式
    DOM4J解析:融合了Dom和Sax的优点,即能保证效率,同时也可多次获取。著名的开发框架Spring和Hibernate都使用了Dom4j的功能。(注使用时需要导入jar包:dom4j-1.6.1.jar)

3.使用DOM4J

<?xml version="1.0" encoding="utf-8" ?>
<中国>
    <北京>
        <海淀></海淀>
        <丰台></丰台>
    </北京>
    <山东>
        <济南></济南>
        <青岛></青岛>
    </山东>
    <湖北>
        <武汉></武汉>
        <荆州></荆州>
    </湖北>
</中国>
@Test//获取xml中的数据
public void test1() throws DocumentException, IOException {
    //1.获取sax解析器对象
    SAXReader reader = new SAXReader();
    //2.读取某个xml文件--返回一个文档对象,表示整个xml文档树
    Document doc = reader.read("src/xmlDemoTest/demo01/city.xml");
    //3.获取根标签
    Element root = doc.getRootElement();

    //4.逐级向下寻找标签    获得山东标签下的子标签名
    Element element1 = root.element("山东");
    List<Element> elements1 = element1.elements();
    for (Element element11 : elements1) {
        System.out.println(element11.getName());
        /*将标签名写入标签内文本*/
        element11.setText(element11.getName());
    }

    /*创建字节输出流*/
    FileOutputStream out = new FileOutputStream("src/xmlDemoTest/demo01/city.xml");
    /*输出格式对象*/
    OutputFormat format = OutputFormat.createPrettyPrint();
    format.setEncoding("utf-8");
    /*创建xml输出对象*/
    XMLWriter xmlWriter = new XMLWriter(out, format);
    /*将dom对象放入到xml输出对象中*/
    xmlWriter.write(doc);
    /*刷新关闭*/
    xmlWriter.close();
}

运行效果:

<?xml version="1.0" encoding="UTF-8"?>

<中国> 
  <北京> 
    <海淀/>  
    <丰台/> 
  </北京>  
  <山东> 
    <济南>济南</济南>  
    <青岛>青岛</青岛> 
  </山东>  
  <湖北> 
    <武汉/>  
    <荆州/> 
  </湖北> 
</中国>

补充:

element.elements(“标签名”).get(index) 可以根据下标拿到父标签下的子标签
element.remove(Element e);可以删除节点
element.add(Element e);添加标签
element.getText();获得标签中的文本
element.getName()获得标签名
DocumentHelper.createDocument();创建一个dom树

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记或往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值