castor Unmarshaller 在AIX机器上,怎么弄都不对
后来使用InputSource()包一下就好了,真是奇怪,如果只用FileReader,则总会有编码问题,使用InputStreamReader 指定编码也不好使。
TaskInfo taskInfo = (TaskInfo) unmarshaller.unmarshal(is);
TestCase.java
package com.utan.bean; import java.io.FileNotFoundException; import java.io.FileReader; import java.util.Iterator; import java.util.Vector; import org.exolab.castor.mapping.Mapping; import org.exolab.castor.xml.Unmarshaller; import org.xml.sax.InputSource; import com.utan.exchange.config.ExMapping; import com.utan.exchange.config.MappingItem; public class TestCase { /** * 获得输入源 * @param transFile * @return */ public InputSource getTransFileReader(String transFile) throws FileNotFoundException { InputSource is = null; is = new InputSource(new FileReader(transFile)); return is; } /** * 测试一 * */ public void test1(){ try { InputSource is = getTransFileReader("test.xml"); Mapping map = new Mapping(); map.loadMapping(this.getClass().getResource("mapping.xml")); Unmarshaller unmarshaller = new Unmarshaller(TaskInfo.class); unmarshaller.setMapping(map); TaskInfo taskInfo = (TaskInfo) unmarshaller.unmarshal(is); System.out.println(taskInfo.getTaskName()); System.out.println(taskInfo.getTaskDesc()); System.out.println(taskInfo.getTaskEnDesc()); } catch (Exception e) { e.printStackTrace(); } } /** * 主方法入口 * @param args */ public static void main(String[] args) { TestCase tc = new TestCase(); tc.test1(); } }
TaskInfo.java
package com.utan.bean; public class TaskInfo { private String taskName; private String taskDesc; private String taskEnDesc; public String getTaskDesc() { return taskDesc; } public void setTaskDesc(String taskDesc) { this.taskDesc = taskDesc; } public String getTaskEnDesc() { return taskEnDesc; } public void setTaskEnDesc(String taskEnDesc) { this.taskEnDesc = taskEnDesc; } public String getTaskName() { return taskName; } public void setTaskName(String taskName) { this.taskName = taskName; } }
Mapping.xml
<?xml version="1.0"?> <!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd"> <mapping> <description>Map xml file to Template object</description> <class name="com.utan.bean.TaskInfo"> <map-to xml="trans"/> <field name="taskName" type="java.lang.String"> <bind-xml name="taskName" node="element"/> </field> <field name="taskDesc" type="java.lang.String"> <bind-xml name="taskDesc" node="element"/> </field> <field name="taskEnDesc" type="java.lang.String"> <bind-xml name="taskEnDesc" node="element"/> </field> </class> </mapping>
test.xml
<?xml version="1.0" encoding="GB2312"?><taskInfo> <taskName>RCPMake2101</taskName> <taskDesc>人民币跨境收入信息(2101)</taskDesc> <taskEnDesc>RCPMake2101</taskEnDesc> </taskInfo>