天宇的JAVA空间站


使用Digester解析XML

07-06-19 22:49Update

LifevV.COM编辑部

本文对怎么样使用Digester解析XML做了比较深入和透彻的说明。

Page:  <1|2>
什么是Digester?
Digester是Jakarta-Commons项目提供的可以简单绑定XML到JavaBean的工具。
特点:
1,    可以以JAVA对象的形式来表现XML形式,比较直观。往往被绑定的JAVA对象的构造跟XML文件的构造可以完全一样。
2,    只能从XML到JavaBean的单方面绑定。反过来,不能把JavaBean的数据保存回XML。常用做XML解析。这有点不同于JAXB,Castor,Relaxer等双向绑定工具。
3,    XML的节点以及属性名,可以不必等同于JAVA类的类名,属性名,比较灵活。
4,    绑定规则可以自由定制,也可XML化。

从范例学习Digester
比如有如下XML,怎么绑定到JAVA类呢?
Order.xml
<orders>
 <order seq="0001" date="2007-06-12">
  <customer name="C1" />
  <goods>
   <item id="01" name="book" />
   <item id="02" name="CD" />
  </goods>
 </order>
 
 <order seq="0002" date="2007-06-12">
  <customer name="C2" />
  <goods>
   <item id="05" name="Note" />
   <item id="06" name="Pen" />
  </goods>
 </order>
 
</orders>



说明:
orders:订单集合
order:一宗订单
order.seq:流水号
order.date:日期
customer:顾客
customer.name:顾客名
goods:所有商品集合
item:一件商品
item.id:商品id
item.name:商品名

一般情况下,从对象的角度来看,我们可以把上述XML描述成:
Java Class

标签 类名(属性列表) 说明
<orders> Orders (List<Order> orderList) 订单集合Orders包含0到多个订单Order 对象,用List集合orderList 来表示
<order> Order (seq, date, customer, goods) 每个Order有流水线seq,日期date,一个顾客,多件商品等属性
<customer> Customer (name) 顾客Customer有姓名name属性
<goods> Goods (List<Item>itemList) 商品集合Goods包含多件商品Item
<item> Item(id, name) 商品有id,名称name等属性


根据以上分析,我们分别为order.xml创建以下java类。
Orders.java
Order.java
Customer.java
Goods.java
Item.java

上面的分析已经比较详细,java类的内容就不列出来了。
接第2页
Page:  <1|2>
  • Relative Articles
 
Copyright ©2006-2010 lifevv.com. All Rights Reserved
POWERED BY @pmplat.syboos.com