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编写步骤:
- 先加载xml文件创建Document对象
- 通过Document对象获取根元素对象
- 通过根元素.elements(标签名),可以返回一个集合,这个集合里放着所有你制定的标签名的元素对象
- 找到你要修改、删除的子元素,进行相应的操作
- 保存到磁盘上
需要解析的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));
}
}