使用dom4j读取xml文件得到document对象
先新建一个xml文件
<!--books.xml-->
<?xml version="1.0" encoding="utf-8" ?>
<!--xml版本和编码格式-->
<books>
<book sn="SN1234">
<name>时间简史</name>
<author>霍金</author>
<price>75</price>
</book>
<book sn="SN1234">
<name>Java从入门到入土</name>
<author><某某某<</author>
<price>9.9</price>
</book>
</books>
//books.java
package lianxi01;
import java.math.BigDecimal;
public class books {
private String sn;//防止类中的数据成员,在类的定义之外被修改
private String name;
private String author;
private BigDecimal pricel;
@Override
public String toString() {
return "books{" +
"sn='" + sn + '\'' +
", name='" + name + '\'' +
", author='" + author + '\'' +
", pricel=" + pricel +
'}';
}
public books(String sn, String name, String author, BigDecimal pricel) {
this.sn = sn;
this.name = name;
this.author = author;
this.pricel = pricel;
}
public books() {
}
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 getPricel() {
return pricel;
}
public void setPricel(BigDecimal pricel) {
this.pricel = pricel;
}
}
将dom4j-1.6.1.jar放到lib文件夹下
将jar包添加到类路径
安装剩下所需jar包测试能否使用
ps:jar包放在文末有需要自取
//dom4jtext.java
package lianxi01;
import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import org.junit.Test;
public class dom4jtext {
@Test
public void text1() throws Exception {
//创建saxReader输入流,去读取xml配置文件,生成Document对象
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/01-books.xml");
System.out.println(document);
}
}
测试结果
测试成功后就开始写啦!
//dom4jtext.java
package lianxi01;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.util.List;
public class dom4jtext {
@Test
public void text1() throws Exception {
//创建saxReader输入流,去读取xml配置文件,生成Document对象
SAXReader saxReader = new SAXReader();
// Document document = saxReader.read("src/01-books.xml");
// System.out.println(document);
try {
Document doc = saxReader.read("src/01-books.xml");
System.out.println(doc);
} catch (Exception e){
e.printStackTrace();
}
}
@Test
//读取book.xml生成book类
public void test2() throws Exception{
//1.读取book.xml文件
//通过根元素获取book标签对象
SAXReader reader = new SAXReader();
//在Junit测试中,相对路径是从模块名开始算
Document document = reader.read("src/01-books.xml");
//2.通过document对象获取根元素
Element rootElement = document.getRootElement();
// System.out.println(rootElement);
//通过根元素获取book标签对象
//element()和element()都是通过标签名查找子元素
List<Element> books = rootElement.elements("book");
//4.便利,处理每个book标签转换为book类
for (Element book : books){
//asXML()把标签对象转化为标签字符串
// System.out.println(book.asXML());
Element nameElement = book.element(("name"));
//getText()可以获取标签中文本内容
String nameText = nameElement.getText();
// System.out.println(nameText);
//直接获取指定标签名的文本内容
String priceText = book.elementText("price");
// System.out.println(priceText);
String authorText = book.elementText("author");
// System.out.println(authorText);
//获取属性值
String snValue = book.attributeValue("sn");
// System.out.println(snValue);
// System.out.println(new Book(snValue,nameText,Double.parseDouble(priceText),authorText));
}
}
}
最后完成!
文章中提到的jar包链接↓(失效dd)
链接:https://pan.baidu.com/s/1Vlz0yJVAFS2_4i08CWUvsA
提取码:ainz