利用Jakarta Commons Digester匹配XML配置文件信息與其對應的xml規則文件形成Java Object
說明:在這裡以一個簡單的例子來說明如何使用Digester。
第一步:下載Digester
在http://jakarta.apache.org/commons/index.Html頁面找到Digester Project,並下載commons-digester-1.6.zip(我使用的)
第二步:所需主要lib
commons-digester.jar : 這個就是Digester主要的lib
(digester中解析xml利用的是Sax方法,有可能需要crimson.jar,在我的JBuilder環境就不需要,因為jdk已經帶了解析xml文件的lib)
commons-beanutils.jar : 主要公用包(請查看http://www.apache.org)
commons-logging.jar : 其log包,由於commons-digester.jar該包中使用
第三步:書寫xml配置文件(config.xml)、xml規則文件(rules.xml)與Java Object(Example.java)
1.config.xml
<?xml version="1.0" encoding="UTF-8"?>
<db-base-config>
<control>
<queue-connection-factory>java:/ConnectionFactory</queue-connection-factory>
<sender-queue>
<param name="Internet">queue/Email</param>
<param name="CDMA">queue/SmsCdma</param>
</sender-queue>
</control>
<db-foreign-exchange-sql>
<publication_id>1</publication_id>
<receiver-list>
<param>Telephone</param>
<param>Email</param>
</receiver-list>
</db-foreign-exchange-sql>
</db-base-config>
2. rules.xml
<?xml version="1.0" encoding="UTF-8"?>
<digester-rules>
<pattern value="db-base-config/control">
<call-method-rule pattern="queue-connection-factory" methodname="setQueueConnectionFactory" paramcount="0"/>
<pattern value="sender-queue/param">
<call-method-rule methodname="addSenderQueue" paramcount="2"/>
<call-param-rule paramnumber='0' attrname='name'/>
<call-param-rule paramnumber='1'/>
</pattern>
</pattern>
<pattern value="db-base-config/db-foreign-exchange-sql">
<call-method-rule pattern="publication_id" methodname="setExchangePublicationID" paramcount="0"/>
<pattern value="receiver-list/param">
<call-method-rule methodname="addReceiverList" paramcount="0"/>
</pattern>
</pattern>
</digester-rules>