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>