Digester解析XML文件

xml文件内容如下:

<?xml version="1.0"?>

<library>
<book id="1" name="java book" auther="小王">
<time>1988-03-25</time>
</book>
<book id="2" name="c book" auther="小王">
<time>1999-9-09</time>
</book>
<book id="3" name="UML book" auther="鳄鱼">
<time>1988-89-99</time>
</book>
<book id="4" name="c++ book" auther="小鳄鱼">
<time>1988-89-99</time>
</book>
</library>


Book.java文件如下:

public class Book {
private String id = null;
private String name = null;
private String auther = null;
private String time = null;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAuther() {
return auther;
}

public void setAuther(String auther) {
this.auther = auther;
}

public String getTime() {
return time;
}

public void setTime(String time) {
this.time = time;
}

public void showBookInfo() {

System.out.println("*******book id is :" + this.getId() + "**********");
System.out.println("book name is :" + this.getName());
System.out.println("book auther is :" + this.getAuther());
System.out.println("book time is :" + this.getTime());

}

}



Library.java文件内容如下:

public class Library {
private Vector<Book> books = null;// 创建一个Vector对象,用来存储book对象

/**
* 解析XML文件
*
* @param file
* 文件名
* @throws IOException
* @throws SAXException
*/
public void praseXML(File file) throws IOException, SAXException {
Digester dig = new Digester();// 创建一个Digester对象
dig.setValidating(false);// 设置不用DTD验证
dig.addObjectCreate("library", Library.class);// 解析时,当遇到library结点,则创建一个libraray对象
dig.addObjectCreate("library/book", Book.class);// 解析时,当遇到library下的book结点,则创建一个book对象
dig.addSetProperties("library/book", "id", "id");// 将book结点中的attribute的id值赋给book对象.也是一个rule(规则)
dig.addBeanPropertySetter("library/book/time", "time");// 将book结点下的time结点的值赋给book对象time属性,有三种赋值方式,此为其一
// dig.addCallMethod("library/book/time",
// "setTime",0);//将book结点下的time结点的值赋给book对象time属性,有三种赋值方式,此为其二
/*
* 将book结点下的time结点的值赋给book对象time属性,有三种赋值方式,此为其三
* dig.addCallMethod("library/book", "setTime", 1);
* dig.addCallParam("library/book/time", 0);
*/
dig.addSetNext("library/book", "addBook");// 当在次遇到book结点时进行的操作。
Library lib = (Library) dig.parse(file);// 开始解析,并返回此XML文件的根结点

lib.showLibraryInfo();// 输出其lib的信息
}

/**
* 测试类
*
* @param args
*/
public static void main(String[] args) {
File file = new File("E:\\wang\\work\\digester\\src\\book.xml");// 创建一个文件对象
try {
new Library().praseXML(file);// 创建 一个library对象,并调用praseXML方法

} catch (Exception e) {
System.out.println(e.toString());
}
}

public Library() {
books = new Vector<Book>();
}

public void addBook(Book book) {
books.add(book);
}

public void showLibraryInfo() {
System.out.println("library has " + books.size() + " kides book");
for (int i = 0; i < books.size(); i++)
books.get(i).showBookInfo();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值