4.2段入れ子Beanの読み込み |
|
|
|
|
|
|
|
|
Listの中に、JavaBeanのListがあるタイプであるが、 |
|
クラスとルールが多くなるだけで、入れ子Beanと原理的には変わらない。 |
|
|
JavaBean
sample.util.digester.CascadeListBean.java |
|
|
package
sample.util.digester; |
|
|
import
java.util.ArrayList; |
|
import
java.util.List; |
|
|
public
class CascadeListBean { |
|
|
|
private String countryJ =
""; |
|
|
private String countryE =
""; |
|
|
private List list_ = new
ArrayList(); |
|
|
|
private static final
String LS = System.getProperty("line.separator"); |
|
|
|
public String toString()
{ |
|
|
StringBuffer sb = new
StringBuffer(); |
|
|
sb.append("<"); |
|
|
sb.append(countryJ); |
|
|
sb.append("|"); |
|
|
sb.append(countryE); |
|
|
sb.append(">"); |
|
|
sb.append(LS); |
|
|
|
if(list_.size() > 0) { |
|
|
|
//sb.append(tempSubTest.getParam1()); |
|
|
for(int i = 0 ; i <
list_.size() ; i++) { |
|
|
ListBean listBean =
(ListBean)list_.get(i); |
|
|
sb.append(" "+listBean.toString() + LS); |
|
|
} |
|
|
} |
|
|
|
return sb.toString(); |
|
|
} |
|
|
public void
addListBean(ListBean listBean) { |
|
|
list_.add(listBean); |
|
|
} |
|
|
public List
getListBeanList() { |
|
|
return list_; |
|
|
} |
|
|
public String
getCountryJ() { |
|
|
return countryJ; |
|
|
} |
|
|
public String
getCountryE() { |
|
|
return countryE; |
|
|
} |
|
|
public void
setCountryJ(String string) { |
|
|
countryJ = string; |
|
|
} |
|
|
public void
setCountryE(String string) { |
|
|
countryE = string; |
|
|
} |
|
} |
|
|
|
XMLデータファイル c:\usr\local\digester\CascadeListBeanData.xml |
|
|
<?xml
version='1.0' encoding='UTF-8'?> |
|
<dataset> |
|
<country countryJ="日本"
countryE="Japan"/> |
|
<block> |
|
|
<address
pref="東京" city="高輪"/> |
|
<pcinfo id="PC2 "
os="win2000" cpumhz="500" memmb="256"
hdgb="16" http_server="" |
|
db="" java=""
visual_studio="" virus_tool="" etc=""
maker="FujitsuDeskPower" remarks=" "/> |
|
<pcinfo id="PC3 "
os="win2000" cpumhz="500" memmb="192"
hdgb="12" http_server="" |
|
db="" java=""
visual_studio="あぱっち" virus_tool="" etc="漢字テスト"
maker="FujitsuDeskPower" remarks=" "/> |
|
</block> |
|
<block> |
|
|
<address
pref="千葉" city="東金"/> |
|
<pcinfo id="PC4 "
os="win2000" cpumhz="500" memmb="256"
hdgb="16" http_server="" |
|
db="" java=""
visual_studio="" virus_tool="" etc=""
maker="FujitsuDeskPower" remarks=" "/> |
|
<pcinfo id="PC5 "
os="win2000" cpumhz="500" memmb="192"
hdgb="12" http_server="" |
|
db="" java=""
visual_studio="あぱっち" virus_tool="" etc="漢字テスト"
maker="FujitsuDeskPower" remarks=" "/> |
|
</block> |
|
</dataset> |
|
|
|
ルールファイル c:\usr\local\digester\CascadeListBeanRuleSample.xml |
|
|
<?xml
version = "1.0" encoding = "Shift_JIS" ?> |
|
|
<digester-rules> |
|
|
<object-create-rule
pattern="dataset"
classname="sample.util.digester.CascadeListBean" /> |
|
|
|
<pattern
value="dataset/country"> |
|
|
<set-properties-rule
/> |
|
|
</pattern> |
|
|
|
<pattern
value="dataset/block"> |
|
|
<object-create-rule
classname="sample.util.digester.ListBean" /> |
|
|
<set-properties-rule
/> |
|
|
<set-next-rule
methodname="addListBean" /> |
|
|
</pattern> |
|
|
|
<pattern
value="dataset/block/address"> |
|
|
<set-properties-rule
/> |
|
|
</pattern> |
|
|
|
<pattern
value="dataset/block/pcinfo"> |
|
|
<object-create-rule
classname="sample.util.db.SoftwareBean" /> |
|
|
<set-properties-rule
/> |
|
|
<set-next-rule
methodname="addSoftwareBean" /> |
|
|
</pattern> |
|
</digester-rules> |
|
|
|
|
読み込みテストJavaクラス sample.util.digester.CascadeListBeanTest.java |
|
|
package
sample.util.digester; |
|
|
import
java.io.File; |
|
|
import
org.apache.commons.digester.Digester; |
|
import
org.apache.commons.digester.xmlrules.DigesterLoader; |
|
|
import
java.rmi.*; |
|
|
public
class CascadeListBeanTest implements java.rmi.Remote { |
|
|
|
public
CascadeListBeanTest() {} |
|
|
|
public static void
main(String[] args) throws Exception { |
|
|
CascadeListBeanTest clbt
= new CascadeListBeanTest(); |
|
|
CascadeListBean clb =
clbt.getCascadeListBean(); |
|
|
System.out.println(clb.toString()
); |
|
|
} |
|
|
|
public CascadeListBean
getCascadeListBean() throws RemoteException { |
|
|
CascadeListBean clb =
null; |
|
|
try { |
|
|
|
Digester d =
DigesterLoader.createDigester(new
File("/usr/local/digester/CascadeListBeanRule.xml").toURL()); |
|
clb =
(CascadeListBean)d.parse(new
File("/usr/local/digester/CascadeListBeanData.xml")); |
|
|
|
} catch( Exception exc )
{ |
|
|
exc.printStackTrace(); |
|
|
} |
|
|
return clb; |
|
|
} |
|
} |
|
|
|
実行結果 |
|
|
<日本|Japan> |
|
東京|高輪 |
|
PC2,FujitsuDeskPower,500,256,16,,,,,,, |
|
PC3,FujitsuDeskPower,500,192,12,,漢字テスト,,,,あぱっち, |
|
|
千葉|東金 |
|
PC4,FujitsuDeskPower,500,256,16,,,,,,, |
|
PC5,FujitsuDeskPower,500,192,12,,漢字テスト,,,,あぱっち, |
|
|
|
JSP画面結果 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|