castor怎么处理集合
比如:
<EML_ID_LIST>
<EML_ID>479291230600000028</EML_ID>
</EML_ID_LIST>
<EML_ID_LIST>
<EML_ID>479291230600000029</EML_ID>
</EML_ID_LIST>
问题点数:100、回复次数:6Top
1 楼haimingway(hemingway)回复于 2006-03-17 11:34:48 得分 0
怎么都没人啊。。。。唉。。。Top
2 楼echomyf(ECHO)回复于 2006-03-17 16:55:58 得分 100
<!DOCTYPE databases PUBLIC
"-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.exolab.org/mapping.dtd">
<mapping>
<class name="com.lczmsoft.bpe.busi.RoleBox" auto-complete="false">
<field name="EML_ID_LIST" type="com.a.Role"
collection="collection"/>
</class>
<class name = "com.a.BpeRole">
<field name="EML_ID"/>
</class>
</mapping>
这是一个mapping文件
不知道你的类结构,所以只能写一个框架
Top
3 楼haimingway(hemingway)回复于 2006-03-20 10:21:08 得分 0
你这样不对吧?Top
4 楼echomyf(ECHO)回复于 2006-03-20 13:36:46 得分 0
我说过了,我不知道你那边的类结构,我是拿我以前写的mapping做一个例子.你肯定不能拿这个文件去用的.
castor的文档上有很详细的说明的.
Top
5 楼echomyf(ECHO)回复于 2006-03-20 16:18:04 得分 0
<!DOCTYPE databases PUBLIC
"-//EXOLAB/Castor Mapping DTD Version 1.0//EN"
"http://castor.exolab.org/mapping.dtd">
<mapping>
<class name="demo.Workers" auto-complete="false">
<map-to xml="Workers"/>
<field name="employees" type="demo.Employee"
collection="collection">
<bind-xml name="EML_ID_LIST"/>
</field>
</class>
<class name = "demo.Employee">
<field name="empId">
<bind-xml name="EML_ID" node="element"/>
</field>
</class>
</mapping>
package demo;
import java.util.ArrayList;
import java.util.List;
public class Workers {
private List employees =new ArrayList();
public void setEmployees(List empls) {
this.employees = empls;
}
public List getEmployees() {
return employees;
}
}
package demo;
public class Employee {
private String empId;
public void setEmpId(String empId) {
this.empId = empId;
}
public String getEmpId() {
return empId;
}
}
下边是解析方法:
Workers emp = null;
Mapping map = new Mapping();
try {
map.loadMapping(this.getClass().getResource(
"/config/Role.mapping.xml").getFile());
Reader reader = new FileReader(new File(this.getClass()
.getResource("/config/Role.define.xml").getFile()));
Unmarshaller unmarshaller;
unmarshaller = new Unmarshaller(map);
emp = (Workers) unmarshaller.unmarshal(reader);
if (emp != null) {
List list = emp.getEmployees();
for (int i = 0; i < list.size(); i++) {
log.debug(list.get(i));
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MappingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MarshalException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ValidationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Top
6 楼echomyf(ECHO)回复于 2006-03-20 16:24:09 得分 0
对了
你的原来的xml数据要写成下边的样式
<?xml version="1.0" encoding="gb2312"?>
<Workers>
<EML_ID_LIST>
<EML_ID>479291230600000028</EML_ID>
</EML_ID_LIST>
<EML_ID_LIST>
<EML_ID>479291230600000029</EML_ID>
</EML_ID_LIST>
</Workers>Top




