XML文件和dom4j解析

1.什么是XML?
XML是可扩展的标记性语言
2.XML的作用?
xml主要的作用有:

  • 用来保存数据,而且这些数据具有自我描述性
  • 它还可以作为项目或者模板的配置文件
  • 还可以作为网络传输数据的格式(现在Json为主)

3.XML语法

  • 文档说明
  • 元素(标签)
  • xml属性
  • xml注释
  • 文本区域(CDATA区)

4.XML解析技术
XML可扩展的标记语言,不管是html文件还是xml文件它们东都市标记型文档,都可以使用w3c组织制定的dom技术解析。

在这里插入图片描述
Dom4j解析技术

需要先导入jar包或依赖

     	<dependency>
            <groupId>dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>1.6.1</version>
        </dependency>

dom4j编写步骤:

  1. 先加载xml文件创建Document对象
  2. 通过Document对象获取根元素对象
  3. 通过根元素.elements(标签名),可以返回一个集合,这个集合里放着所有你制定的标签名的元素对象
  4. 找到你要修改、删除的子元素,进行相应的操作
  5. 保存到磁盘上

需要解析的xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<books>
    <book sn="SN12341232">
        <name>辟邪剑谱</name>
        <price>9.9</price>
        <author>班主任</author>
    </book>
    <book sn="SN12341231">
        <name>葵花宝典</name>
        <price>99.99</price>
        <author>班长</author>
    </book>
</books>

对应的JavaBean

package test.java;

import java.math.BigDecimal;

/**
 * @ClassName : book  //类名
 * @Description : bookBean  //描述
 * @Author : Gao //作者
 * @Date: 2021/10/30  20:56
 */

public class book {
    private String sn;
    private String name;
    private String author;
    private BigDecimal price;

    public book() {}

    public book(String sn, String name, String author, BigDecimal price) {
        this.sn = sn;
        this.name = name;
        this.author = author;
        this.price = price;
    }

    public String getSn() {
        return sn;
    }

    public void setSn(String sn) {
        this.sn = sn;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    @Override
    public String toString() {
        return "book{" +
                "sn='" + sn + '\'' +
                ", name='" + name + '\'' +
                ", author='" + author + '\'' +
                ", price=" + price +
                '}';
    }
}

遍历标签获取所有的标签中的内容
分为四个步骤:
第一步:通过创建SAXReader对象,来读取xml文件,获取Document对象
第二步:通过Document对象。拿到XML的根元素对象
第三步:通过根元素对象。获取所有的book标签对象
第四步:遍历每个book标签对象。然后获取到book标签对象内的每一个元素,再通过getText()方法拿到起始标签和结束标签之间的内容。

    public void dom4j() throws DocumentException {
        //通过创建SAXReader对象。来读取xml文件,获取document对象
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("src/books.xml");
        //通过document对象,拿到xml的根元素对象
        Element rootElement = document.getRootElement();
        //通过根元素对象,获取所有的book标签对象
        List<Element> elements = rootElement.elements();
        //遍历
        for (Element book : elements) {
            //可以先获取每个元素对象,然后再通过getText()获取标签内容,也可以直接通过elementText()直接获取
//          Element name1 = book.element("name");
//          String name2 = name1.getText();
//          System.out.println(name2);
            String sn = book.attributeValue("sn");
            String name = book.elementText("name");
            String author = book.elementText("author");
            BigDecimal bigDecimal = new BigDecimal(book.elementText("price"));
            System.out.println(new book(sn, name, author, bigDecimal));
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值