java用dom4j解析xml_Java中使用dom4j解析xml文档

前段时间学习了XML(Extensible Markup Language)可扩展标记语言后

了解到了XML被设计为具有自我描述性,它的设计宗旨是传输数据,而不是显示数据

那如果我们想要获取到XML的数据内容应该怎么办呢?

于是我最近学习到了可以使用dom4j来解析XML文档并获取其中的数据

那么什么是dom4j呢?

简单来说:dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API

1. 导入jar包及创建XML文件

大家可以搜索dom4j从GitHub上获取到不同版本的jar包以及操作文档,由于操作文档对dom4j的书写很详尽,所以本文仅作为记录及参考所用

大家将对应jar包导入到项目后,首先先创建一个XML文件,如下所示:

海的女儿

安徒生

0.43

故事新编

鲁迅

0.31

2. 创建POJO类

创建成功后,再去创建一个对应的POJO(Plain Ordinary Java Object)简单的Java对象类,并生成无参和有参构造方法、Getter、Setter方法,重写toString方法

重写后可以直接调用POJO的toString()方法打印其属性值。如果不重写,直接调用Object类的toString()方法,打印的是该对象的内存地址(类名@哈希码值)

package pers.xiqingbo.pojo;

/**

* @PackageName: pers.xiqingbo.pojo

* @ClassName: Book

* @Description: 图书类

* @Author: Schieber

* @Date: 2021/1/13 上午 6:53

*/

public class Book {

private String sn;

private String name;

private String author;

private Double price;

public Book() {

}

public Book(String sn, String name, String author, Double 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 Double getPrice() {

return price;

}

public void setPrice(Double price) {

this.price = price;

}

@Override

public String toString() {

return "Book{" +

"sn='" + sn + '\'' +

", name='" + name + '\'' +

", author='" + author + '\'' +

", price=" + price +

'}';

}

}

3. 接下来就可以创建一个新的类及方法进行解析XML文档操作:

package pers.xiqingbo.pojo;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

import org.junit.Test;

import java.io.File;

import java.util.List;

/**

* @PackageName: pers.xiqingbo.pojo

* @ClassName: Dom4jTest

* @Description: 使用dom4j解析xml文档并遍历xml节点

* @Author: Schieber

* @Date: 2021/1/13 上午 7:45

*/

public class Dom4j {

@Test

public void read() throws DocumentException {

// 创建SAXReader实例

SAXReader reader = new SAXReader();

// read()读取指定的XML文档并形成DOM树

Document document = reader.read(new File("books.xml"));

// getRootElement()获取根节点

Element rootEle = document.getRootElement();

// elements()获取根节点的子节点

List bookEles = rootEle.elements();

// 遍历子节点

for (Element book : bookEles

) {

// element()获取子节点指定的子元素

Element nameElement = book.element("name");

// getText()获取子元素的文本内容

String nameText = nameElement.getText();

// elementText()直接获取元素的文本内容

String authorText = book.elementText("author");

String priceText = book.elementText("price");

// attributeValue()直接获取元素的属性值

String snValue = book.attributeValue("sn");

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

}

}

}

至此就是使用dom4j简单解析XML文档的全部过程

还有创建一个新的XML文档,将文档写入文件等等操作,大家可以在上面的dom4j链接中查看使用

下图是以上代码的运行结果:

263c183389d0154f0fe8a82635497e3f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值