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(这里用一句话描述这个类的作用) ** TODO(这里描述这个类补充说明 – 可选) * * @author houpengwei(1379902378@qq.com) * @Date 2019年05月06日 */public class OffLineUtil { /** * * TODO 正式数据上传成功以后在删除,就是为了测试书写的方法 *
* 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;@Datapublic class RootDto { private ListscreenshotList;}
2)screenshot对应的实体类(因为他这个是一个集合中又包含集合,ScreenshotDto是他本身的实体,只不过又封装了一个集合对象在实体里面)
package net.tfedu.problem.dto;import lombok.Data;import java.util.List;@Datapublic class ScreenShotDtoAndAnswer extends ScreenshotDto{ private ListscreenshotAnswerList;}
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 */@Datapublic 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获取封装的对象