友情提醒:
先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。有用记得关注
第一章、功能需求和分析
1.1)具体需求
解析XML字符串,并将解析后得到的结果,按时存入数据库。
1.2)分析需求转为小的问题
①Xml字符串从哪里来,有没有具体示例?
回答:通过HttpCilent调用接口,返回Xml字符串
②用什么方式解析Xml字符串?
回答:将xml字符串转为json,再通过jsonObject获取数据后转为json字符串,将json字符串直接转为对象,存入数据库
③具体存入数据库的是哪些字段?
回答:与实体类对应的字段,根据具体业务决定
④按时存入的存入时间是?是以定时任务的方式吗?如何实现定时任务
回答:以定时任务每天早晚八点
第二章、解决方案
2.1)使用的框架和技术
springboot,mybatis-plus,json,定时任务。文章来源:https://www.toymoban.com/news/detail-798851.html
2.2)需求中每个小问题的解决
①调用接口,获取Xml字符串
暂未写好文章来源地址https://www.toymoban.com/news/detail-798851.html
②Xml字符串解析为json,并获得具体数据
public class XmlUtil {
public static String XmlToJson(String xmlString){
xmlString = "<?xml version=\\\"1.0\\\" ?>\n" +
"<RESULT>"+
"<CLAZZ>"+
"<STUDENT>"+
"<STUDENT_ID>test1</STUDENT_ID>\n" +
"<STUDENT_NAME>test</STUDENT_NAME>\n" +
"<STUDENT_AGE>test1</STUDENT_AGE>\n"+
"</STUDENT>"+
" <STUDENT>"+
" <STUDENT_ID>test2</STUDENT_ID>"+
" <STUDENT_NAME>test2</STUDENT_NAME>"+
" <STUDENT_AGE>test2</STUDENT_AGE>"+
"</STUDENT>"+
"</CLAZZ>"+
"</RESULT>" ;
JSONObject jsonObject = XML.toJSONObject(xmlString);
System.out.println(jsonObject.getJSONObject("RESULT").getJSONObject("CLAZZ").get("STUDENT").toString());
return jsonObject.getJSONObject("RESULT").getJSONObject("CLAZZ").getJSONArray("STUDENT").toString();
}
}
③数据库存入字段
@Service
public class ChginfoServiceImpl implements ChginfoService {
@Autowired
StudentMapper studentMapper;
//接收json字符串,插入数据库
public Integer insertChgData(String chgjson) {
//创建objectMapper对象
ObjectMapper objectMapper = new ObjectMapper();
//忽略字段设置
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
/* Student stu=null;
try {
//简单json直接解析转为对象,--》简单的步骤
chg = objectMapper.readValue(chgjson, Student.class);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
Integer num = studentMapper.insert(stu); */
Student stu=null;
List<Student> stuList = new ArrayList<>();
try {
//json数组解析转为对象--》更复杂的步骤
//1、创建工厂对象
TypeFactory typeFactory = objectMapper.getTypeFactory();
//2、创建 具体实体类 的JavaType类型
JavaType jsonPersonType = typeFactory.constructType(Student.class);
//将jsonPersonType转化成List<JsonPerson>类型,则也就是要创建List<>内有参数的JavaType类型
// 即 constructParametricType(List.class, jsonPersonType)---> List<JsonPerson>
JavaType javaType = typeFactory.constructParametricType(List.class, jsonPersonType);
//将传入的chgjson字符串,转为List<Student>对象
stuList = objectMapper.readValue(chgjson, javaType);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
//遍历存入数据
for(Student s: stuList){
studentMapper.insert(s);
}
return 1;
}
}
④定时任务实现
到了这里,关于解析XML字符串并存入数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!