解析XML字符串并存入数据库

目录

  • 第一章、功能需求和分析
    • 1.1)具体需求
    • 1.2)分析需求转为小的问题
        • ①Xml字符串从哪里来,有没有具体示例?
        • ②用什么方式解析Xml字符串?
        • ③具体存入数据库的是哪些字段?
        • ④按时存入的存入时间是?是以定时任务的方式吗?如何实现定时任务
  • 第二章、解决方案
    • 2.1)使用的框架和技术
    • 2.2)需求中每个小问题的解决
        • ①调用接口,获取Xml字符串
        • ②Xml字符串解析为json,并获得具体数据
        • ③数据库存入字段
        • ④定时任务实现

友情提醒:

先看文章目录,大致了解文章知识点结构,点击文章目录可直接跳转到文章指定位置。有用记得关注

第一章、功能需求和分析

1.1)具体需求

解析XML字符串,并将解析后得到的结果,按时存入数据库。

1.2)分析需求转为小的问题

①Xml字符串从哪里来,有没有具体示例?

回答:通过HttpCilent调用接口,返回Xml字符串

②用什么方式解析Xml字符串?

回答:将xml字符串转为json,再通过jsonObject获取数据后转为json字符串,将json字符串直接转为对象,存入数据库

③具体存入数据库的是哪些字段?

回答:与实体类对应的字段,根据具体业务决定

④按时存入的存入时间是?是以定时任务的方式吗?如何实现定时任务

回答:以定时任务每天早晚八点

第二章、解决方案

2.1)使用的框架和技术

springboot,mybatis-plus,json,定时任务。

2.2)需求中每个小问题的解决

①调用接口,获取Xml字符串

暂未写好

②Xml字符串解析为json,并获得具体数据
public class XmlUtil {

    public static String XmlToJson(String xmlString){
         xmlString = "\n" +
                ""+
                ""+
                 ""+
                        "test1\n" +
                        "test\n" +
                        "test1\n"+
                 ""+
                 " "+
                        " test2"+
                        " test2"+
                        " test2"+
                 ""+
                 ""+
                 "" ;

        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类型,则也就是要创建List<>内有参数的JavaType类型
            // 即 constructParametricType(List.class, jsonPersonType)---> List
            JavaType javaType = typeFactory.constructParametricType(List.class, jsonPersonType);
            //将传入的chgjson字符串,转为List对象
            stuList = objectMapper.readValue(chgjson, javaType);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }

        //遍历存入数据
        for(Student s: stuList){
            studentMapper.insert(s);
        }

        return 1;
    }


}
④定时任务实现

你可能感兴趣的:(其他知识,Java基础知识汇总,数据库,xml,oracle)