要想使用dome4j解析xml首先要引入dome4j的jar包(可以从网上找到)
引入后如下
现在已知有XML文件book.xml
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book bid="1">
<name>java与模式</name>
<price>80</price>
</book>
<book bid="2">
<name>java编程思想</name>
<price>95</price>
</book>
<book bid="3">
<name>疯狂java讲义</name>
<price>90</price>
</book>
</books>
要将上面的文件解析并产生book对象,首先先根据book.xml文件创建对应的book类
package book_dome4j;
public class Book {
private int id;
private String name;
private double price;
public Book() {}
public Book(int id, String name, double price) {
super();
this.id = id;
this.name = name;
this.price = price;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "Book [id=" + id + ", name=" + name + ", price=" + price + "]";
}
}
后面就可以开始解析xml文件了
package book_dome4j;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Test {
public static void main(String[] args) throws Exception {
List<Book> listBook = new ArrayList<>();
SAXReader reader = new SAXReader();
Document document = reader.read("src/book_dome4j/book.xml");
List<Element> list = document.getRootElement().elements();
//这里利用的是增强for循环遍历list集合,也可以使用普通的for循环来遍历
for (Element e : list) {
//获取属性"bid"的值的到一个string类型的数字,再将数字转换成int类型的id
int id = Integer.valueOf(e.attributeValue("bid"));
//获取属性标签为name中的文本值
String name = e.element("name").getText();
//获取文本为price的文本值,并将值转换成double类型的price
double price = Double.valueOf(e.element("price").getText());
//把获取到的值创建成book对象
Book book = new Book(id, name, price);
//把对象添加到book类型的listBook集合中
listBook.add(book);
}
//循环遍历输出集合中的对象
for (Book b : listBook) {
System.out.println(b);
}
}
}
注:如果二级子标签下还有东西也可以和第一次循环一样.elements来获取一个List<Element>对象然后在遍历取出