book.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
以上是xml文件的声明内容
-->
<books><!-- books表示多个图书信息 -->
<book sn="SN12346789"><!-- sn表示图书的序列号 -->
<name>三国演义</name><!-- name表示书名 -->
<author>罗贯中</author><!-- author表示作者 -->
<price>45</price><!-- price表示价格 -->
</book>
<book sn="SN123123123">
<name>水浒传</name>
<author>施耐庵</author>
<price>45</price>
</book>
</books>
Book.java
package books;
/**
* book类:
* 用于存储book.xml中的内容
* 类的属性与book.xml中的标签一致
* @author MCC
*
*/
public class Book {
private String sn;
private String name;
private String author;
private double price;
public Book() {
super();
}
public Book(String sn, String name, String author, double price) {
super();
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 + "]";
}
}
Dom4jTest.java
dom4j是第三方提供的操作xml文件的包
步骤:
- 创建SAXReader对象:SAXReader reader = new SAXReader();
- 读取xml文件:Document doc = reader.read(String src);
- 获取根标签:Element root = doc.getRootElement();
- Element对象的方法:
(1)Element element(String e):获取一个名称为e的子标签
(2)List<Element> elements(String e):获取多个名称为e的子标签
(3)String attributeValue(String name):获取名称为name的属性值
(4)String getText():获取标签中的文本内容
(5)String elementText():直接获取标签内的文本内容,是 Element对象.element(String name).getText() 的合并
(6)String asXML():把标签对象转换为标签字符串
根据上述方法,读取xml文件内容,并保存
package books;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class Dom4jTest {
@Test
public void test1() throws DocumentException {
//1.创建SaxReader对象
SAXReader reader = new SAXReader();
//2.使用SAXReader对象读取xml文件,生成Document对象
Document document = reader.read("src/xmlFile/book.xml");
//3.使用Document对象获取xml文件的根标签
Element rootElement = document.getRootElement();
//4.获取根元素的所有满足要求的子元素
/**
* element(String e) 获取名称为e的一个子标签
* elements(String e) 获取名称为e的多个子标签
*/
List<Element> books = rootElement.elements("book");
//5.遍历获取所有子元素
for(Element book : books) {
//asXML() 把标签对象转换为标签字符串
//System.out.println(book.asXML());
//attributeValue(String str) 获取标签的str属性
String sn = book.attributeValue("sn");
Element eName = book.element("name");
String author = book.elementText("author");
String price = book.elementText("price");
/**
* getText() 获取标签中的文本内容
* elementText(String e) 获取名称为e的标签中的文本内容,是book.element("name").getText()的合并
*/
String name = eName.getText();
Double dprice = Double.parseDouble(price);
//应该存入数据库,这里只演示打印
System.out.println(new Book(sn, name, author, dprice));
}
}
}