前期准备
IDEA中操作步骤:
1.New—>Module(对模块进行命名;xmlTest)
2.xmlTest—>src—>新建一个xml文件(books.xml)
3.xmlTest—>Directory—>lib(新建lib文件夹用于存放dom4j的jar包)
4.右击导入的dom4j-1.6.1.jar包,选择Add as Library…(此步骤的目的是将jar包导入当前类的路径,其中Level中可以设定范围)
成功导入后:
完成前期工作之后,写一个简单的xml文件提供给dom4j的读取:
//books.xml
<?xml version="1.0" encoding="UTF-8" ?>
<books>
<book sn="SN12341232">
<name>yuanze</name>
<price>49.9</price>
<author>匿名</author>
</book>
<book sn="SN12334532">
<name>yuanze1</name>
<price>59.9</price>
<author>匿名1</author>
</book>
</books>
按照xml文件,编写相对于的类,用于将dom4j读取的xml文件的内容导入到book类中进行输出:
//book.java
import java.math.BigDecimal;
public class book {
private String sn;
private String name;
private BigDecimal price;
private String author;
public String getSn() {
return sn;
}
public String getName() {
return name;
}
public BigDecimal getPrice() {
return price;
}
public String getAuthor() {
return author;
}
public void setSn(String sn) {
this.sn = sn;
}
public void setName(String name) {
this.name = name;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public void setAuthor(String author) {
this.author = author;
}
public book(String sn, String name, BigDecimal price, String author) {
this.sn = sn;
this.name = name;
this.price = price;
this.author = author;
}
public book() {
}
@Override
public String toString() {
return "book{" +
"sn='" + sn + '\'' +
", name='" + name + '\'' +
", price=" + price +
", author='" + author + '\'' +
'}';
}
}
建立dom4j.java类,用于解析xml文件:
//dom4.java
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.awt.print.Book;
import java.math.BigDecimal;
import java.util.List;
public class dom4j {
//读取books.xml文件生成book类
@Test
public void test2() throws Exception {
//1.读取books.xml文件
SAXReader reader = new SAXReader();
//在Junit测试中,相对路径是从模块名开始算
Document doc = reader.read("src/books.xml");
//2.通过Documents对象获取根元素
Element rootElement = doc.getRootElement();
//System.out.println(rootElement);
//3.通过根元素获取book标签对象
//element() [返回一个]和elements() [返回多个] 都是通过标签名查找子元素
List<Element> books = rootElement.elements("book");
//4.遍历,处理每个book标签转换为Book类
for(Element book:books){
//asXML() 把标签对象,转换为标签字符串
//System.out.println(book.asXML());
Element nameElement = book.element("name");//得到name标签对象
//System.out.println(nameElement.asXML());
//getText()方法可以获取标签中的文本内容
String nametext = nameElement.getText();
//elementText可以一次性获取指定标签名的文本内容
String price = book.elementText("price");
String author = book.elementText("author");
//获取属性值
String sn = book.attributeValue("sn");
//参数都取到之后,new一个book对象,前面写的book类
System.out.println(new book(sn,nametext,new BigDecimal(price),author));
}
}
}
运行结果:
dom4j可以参考官方手册进行学习: