xml 与dto的相互转换
import org.exolab.castor.mapping.Mapping; import org.exolab.castor.xml.Marshaller; import org.exolab.castor.xml.Unmarshaller; import org.w3c.dom.Document; import org.xml.sax.InputSource; 1) public class JasperReportUtil { /** * 将DTO转换成XML数据 * @param obj DTO对象 * @param encoding编码格式 * @return xml字符串 */ public static String convertDTOtoXML(Object obj,String encoding) { Mapping mapping = new Mapping(); try { InputStream mappingFileIn = PrintContractDto.class.getClassLoader().getResourceAsStream("print/dto/PrintContract.xml"); mapping.loadMapping(new InputSource(mappingFileIn)); //1)dto转换成xml StringWriter sw = new StringWriter(); long startTime = System.currentTimeMillis(); Marshaller marshaller = new Marshaller(sw); marshaller.setMapping(mapping); marshaller.setEncoding(encoding); marshaller.marshal(obj); sw.flush(); long endTime = System.currentTimeMillis(); System.out.println("DTO装化为XML用时:" + (endTime - startTime) + " ms"); //2xml文件转换成dto Unmarshaller unmarshaller = new Unmarshaller(mapping); PrintContractDto stuDist = (PrintContractDto) unmarshaller.unmarshal(new StringReader(sw.toString())); return sw.toString(); } catch (Exception ex) { System.out.println("单证对象转化为xml数据出错"); } return null; } } 2) 下面是对应的PrintContract.xml文件内容: <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Object Mapping DTD Version 1.0//EN" "http://castor.exolab.org/mapping.dtd"> <mapping> <description>Used for com.siyuan.castor.Student</description> <class name="print.dto.PrintContractDto" auto-complete="true"> <map-to xml="Contract"/> <field name="riskGroup" type="print.dto.RiskGroup" get-method="getRiskGroup" set-method="setRiskGroup"> <bind-xml name="riskGroup2" node="element"/> </field> </class>
<class name="print.dto.RiskGroup" auto-complete="true"> <!-- 类中的集合修改字段对应的节点名称 --> <field name="planInfoList" collection="arraylist" type="print.dto.PlanDto" get-method="getPlanInfoList" set-method="setPlanInfoList"> <bind-xml name="planInfoList2" node="element"/> </field> </class> </mapping> 3) http://orange5458.iteye.com/blog/1139596 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- cocos2d-x中shader的使用
- Swift中可选类型隐式解包判断空会报错
- ruby-on-rails – ActionView :: MissingTemplate:缺少模板
- SQLite 常用语句 sql语句
- ruby-on-rails – 用于亚马逊S3的AutoSmusher优化图像?
- oracle – 我可以切片PL / SQL集合吗?
- Martin Fowlers关于依赖注入的大作
- oracle 使用explain plan分析查询语句
- System.StackOverflowException未处理 – C#,. NET
- ruby-on-rails – doa-matchers的ActiveRecord匹配器是否违