有两组数据转换成xml格式:
:::tips
XML的作用:
:::tips
以上的格式就是xml的声明,version是版本的意思,encoding是文件编码格式
:::
时间简史
霍金
75
Java从入门到放弃
9.9
:::tips
html标签:
格式:<标签名>封装的数据标签名>
单标签: <标签名 />
换行
:::tips
元素是指从开始标签到结束标签的内容
例如:Java编程思想
:::
:::tips
xml的标签属性和html的标签属性是非常类似的,属性可以提供元素的额外信息
在标签上可以书写属性:
一个标签上可以书写多个书写,每个书写的值必须要使用“引号”引起来
:::
:::tips
根元素就是顶级元素
没有父标签的元素,叫顶级元素
根元素是没有父标签的顶级元素,而且是唯一一个才行
:::
:::tips
CDATA语法可以告诉xml解析器,我CDATA里的文本内容,只是纯文本,不需要xml语法解析
格式:
:::
:::tips
xml 可扩展的标记语言
不管是 html 文件还是 xml 文件它们都是标记型文档,都可以使用 w3c 组织制定的 dom 技术来解析
:::tips
由于 dom4j 它不是 sun 公司的技术,而属于第三方公司的技术,我们需要使用 dom4j 就需要到 dom4j 官网下载 dom4j 的 jar 包
:::
:::tips
**第一步: 先加载 xml 文件创建 Document 对象 **
**第二步:通过 Document 对象拿到根元素对象 **
**第三步:通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象 **
**第四步:找到你想要修改、删除的子元素,进行相应在的操作 **
第五步,保存到硬盘上
:::
package com.zanedu.pojo;
import java.math.BigDecimal;
public class Book {
private String sn;
private String name;
private double price;
private String author;
public Book() {
}
public Book(String sn, String name, double price, String author) {
this.sn = sn;
this.name = name;
this.price = price;
this.author = author;
}
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 double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@Override
public String toString() {
return "Book{" +
"sn='" + sn + '\'' +
", name='" + name + '\'' +
", price=" + price +
", author='" + author + '\'' +
'}';
}
}
<books>
<book sn="SN12341232">
<name>辟邪剑谱name>
<price>9.9price>
<author>班主任author>
book>
<book sn="SN12341231">
<name>葵花宝典name>
<price>99.99price>
<author>班长author>
book>
books>
@Test
public void test1() throws DocumentException {
// 创建一个SAXReader输入流,取读取xml配置文件,生成Document
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/books.xml");
System.out.println(document);
}
:::tips
**需要分四步操作: **
**第一步,通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象 **
**第二步,通过 Document 对象。拿到 XML 的根元素对象 **
**第三步,通过根元素对象。获取所有的 book 标签对象 **
第四小,遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结束标签之间的文本内容
:::
/**
* 读取books.xml文件生成book类
*/
@Test
public void test2() throws DocumentException {
//1. 读取books.xml文件
SAXReader reader = new SAXReader();
//2. 通过Document对象获取根元素
//在Junit测试中,相对路径是从模块名开始算,即05_xml
Document document = reader.read("src/books.xml");
//3. 通过根元素获取book标签对象
Element rootElement = document.getRootElement();
// System.out.println(rootElement);//org.dom4j.tree.DefaultElement@1a04f701 [Element: ]
//element() 和 elements() 都是通过标签名查找子元素
List<Element> books = rootElement.elements("book");
//4. 遍历,处理每个book标签转换为Book类
for (Element book : books) {
//asXML() 把标签对象,转换成标签字符串
Element name = book.element("name");
//getText() 可以获取标签中的内容
String nameText = name.getText();
//elementText() 直接获取指定标签名的文本内容
String priceText = book.elementText("price");
String authorText = book.elementText("author");
String snValue = book.attributeValue("sn");
System.out.println(new Book(snValue, nameText, Double.parseDouble(priceText), authorText));
}
}