1.增加工具类
/**
* OffLineUtil.java
*/
package net.tfedu.problem.util;
import com.thoughtworks.xstream.XStream;
import net.tfedu.problem.dto.RootDto;
import net.tfedu.problem.dto.ScreenShotDtoAndAnswer;
import net.tfedu.problem.dto.ScreenshotAnswerDto;
import net.tfedu.problem.util.xstream.DateConverter;
/**
* TODO(这里用一句话描述这个类的作用)
* <p>
* TODO(这里描述这个类补充说明 – 可选)
*
* @author houpengwei(1379902378@qq.com)
* @Date 2019年05月06日
*/
public class OffLineUtil {
/**
*
* TODO 正式数据上传成功以后在删除,就是为了测试书写的方法
* <p>
* TODO(这里描述这个方法详情– 可选)
*
* @param xStream TODO(这里描述每个参数,如果有返回值描述返回值,如果有异常描述异常)
*/
public static void xStreamUploadAliasEntity(XStream xStream) {
xStream.registerConverter(new DateConverter());
xStream.alias("root", RootDto.class);
xStream.alias("screenshot", ScreenShotDtoAndAnswer.class);
xStream.alias("screenshotAnswer", ScreenshotAnswerDto.class);
}
}
2.对应的xml中的标签增加对应的实体类
1)root对应的RootDto实体类
package net.tfedu.problem.dto;
import lombok.Data;
import java.util.List;
@Data
public class RootDto {
private List<ScreenShotDtoAndAnswer> screenshotList;
}
2)screenshot对应的实体类(因为他这个是一个集合中又包含集合,ScreenshotDto是他本身的实体,只不过又封装了一个集合对象在实体里面)
package net.tfedu.problem.dto;
import lombok.Data;
import java.util.List;
@Data
public class ScreenShotDtoAndAnswer extends ScreenshotDto{
private List<ScreenshotAnswerDto> screenshotAnswerList;
}
3)screenshotAnswer对应的实体类
/**
* ScreenshotAnswerDto.java
* net.tfedu.problem.dto
*/
package net.tfedu.problem.dto;
import java.util.Date;
import com.we.core.db.entity.BaseEntity;
import lombok.Data;
import java.io.Serializable;
/**
* 截图做题答案表Dto
*
* @author houpengwei
* @Date 2019-05-06
*/
@Data
public class ScreenshotAnswerDto extends BaseEntity {
/**
* 匹配id
*/
private long id;
/**
* 截图做题Id
*/
private long screenshotId;
/**
* 学生用户id
*/
private long studentId;
/**
* 该题学生回答
*/
private String answer;
/**
* 学生回答是否正确(默认为0 ,1正确2错误3半对半错)
*/
private int state;
/**
* 学生上传附件路径及文件名
*/
private String filePath;
/**
* 老师评语
*/
private String remark;
/**
* 提交时间
*/
private Date submitTime;
/**
* 0单选1文本 2数码笔3图片
*/
private int answerType;
/**
* 用户答题用时 默认秒
*/
private int useTime;
/**
* 错误类型id
*/
private long errorTypeId;
/**
* 知识点
*/
private String navigationCode;
}
3.获取上传的xml
XStream xStream = new XStream(new DomDriver());
OffLineUtil.xStreamUploadAliasEntity(xStream);
RootDto rootDto = (RootDto) xStream.fromXML(problemXml);
4.使用rootDto.get获取封装的对象