#学习笔记#使用dom4j读取xml文件得到document对象

使用dom4j读取xml文件得到document对象

先新建一个xml文件

<!--books.xml-->
<?xml version="1.0" encoding="utf-8" ?>
<!--xml版本和编码格式-->

<books>
    <book sn="SN1234">
        <name>时间简史</name>
        <author>霍金</author>
        <price>75</price>
    </book>
    <book sn="SN1234">
        <name>Java从入门到入土</name>
        <author>&lt;某某某&lt;</author>
        <price>9.9</price>

    </book>
</books>
//books.java
package lianxi01;

import java.math.BigDecimal;

public class books {
     private String sn;//防止类中的数据成员,在类的定义之外被修改
     private String name;
     private String author;
     private BigDecimal pricel;

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

    public books(String sn, String name, String author, BigDecimal pricel) {
        this.sn = sn;
        this.name = name;
        this.author = author;
        this.pricel = pricel;
    }

    public books() {
    }

    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 getPricel() {
        return pricel;
    }

    public void setPricel(BigDecimal pricel) {
        this.pricel = pricel;
    }
}

将dom4j-1.6.1.jar放到lib文件夹下
在这里插入图片描述

将jar包添加到类路径

在这里插入图片描述
安装剩下所需jar包测试能否使用

ps:jar包放在文末有需要自取

//dom4jtext.java
package lianxi01;

import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import org.junit.Test;

public class dom4jtext {
    @Test
    public void text1() throws Exception {
        //创建saxReader输入流,去读取xml配置文件,生成Document对象
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("src/01-books.xml");
        System.out.println(document);
    }
}

测试结果
在这里插入图片描述
测试成功后就开始写啦!

//dom4jtext.java
package lianxi01;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;


import java.util.List;

public class dom4jtext {
    @Test
    public void text1() throws Exception {
        //创建saxReader输入流,去读取xml配置文件,生成Document对象
        SAXReader saxReader = new SAXReader();
//        Document document = saxReader.read("src/01-books.xml");
//        System.out.println(document);
        try {
            Document doc = saxReader.read("src/01-books.xml");
            System.out.println(doc);
        } catch (Exception e){
            e.printStackTrace();
        }
    }
    @Test
    //读取book.xml生成book类
    public void test2() throws Exception{
        //1.读取book.xml文件
        //通过根元素获取book标签对象
        SAXReader reader = new SAXReader();
        //在Junit测试中,相对路径是从模块名开始算
        Document document = reader.read("src/01-books.xml");
        //2.通过document对象获取根元素
        Element rootElement = document.getRootElement();
//        System.out.println(rootElement);
        //通过根元素获取book标签对象
        //element()和element()都是通过标签名查找子元素
        List<Element> books = rootElement.elements("book");
        //4.便利,处理每个book标签转换为book类
        for (Element book : books){
            //asXML()把标签对象转化为标签字符串
//            System.out.println(book.asXML());
            Element nameElement = book.element(("name"));
            //getText()可以获取标签中文本内容
            String nameText = nameElement.getText();
//            System.out.println(nameText);
            //直接获取指定标签名的文本内容
            String priceText = book.elementText("price");
//            System.out.println(priceText);

            String authorText = book.elementText("author");
//            System.out.println(authorText);

            //获取属性值
            String snValue = book.attributeValue("sn");
//            System.out.println(snValue);

//            System.out.println(new Book(snValue,nameText,Double.parseDouble(priceText),authorText));
        }

    }
}

最后完成!

文章中提到的jar包链接↓(失效dd)
链接:https://pan.baidu.com/s/1Vlz0yJVAFS2_4i08CWUvsA
提取码:ainz

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值