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获取封装的对象