package com.bcxin.risk.util;


import com.bcxin.risk.user.zwsso.hb.entity.NODE;
import com.bcxin.risk.user.zwsso.hb.entity.NODES;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;

/**
 * jxab工具类
 *
 * @author wangjianjun
 * @date 2020/7/21
 */
public final class BcxinXmlUtil {

    /**
     * javabean转xmL字符串
     *
     * @author wangjianjun
     * @date 2020/7/21
     */
    public static String toXmlString(Object obj) {
        String result;
        try {
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
            Marshaller marshaller = context.createMarshaller();
            StringWriter writer = new StringWriter();
            marshaller.marshal(obj, writer);
            result = writer.toString();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        return result;
    }

    /**
     * xml转javabean 仅限于NODE，不是通用类
     */
    private static NODES toJavabean(String xmlString) {
        JAXBContext jaxbContext;
        try {
            jaxbContext = JAXBContext.newInstance(NODES.class);
            Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
            NODES node = (NODES) jaxbUnmarshaller.unmarshal(new StringReader(xmlString));
            return node;
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        String testXml="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><NODES><NODE><NODENAME>申报</NODENAME><STEP>1</STEP><STATE>1</STATE><TIMELIMIT>1</TIMELIMIT><STARTTIME>2020-08-24 16:12:27</STARTTIME><ENDTIME>2020-08-24 16:12:27</ENDTIME></NODE><NODE><NODENAME>受理</NODENAME><STEP>2</STEP><STATE>1</STATE><TIMELIMIT>1</TIMELIMIT><STARTTIME>2020-08-24 16:12:27</STARTTIME><ENDTIME>2020-08-24 16:12:27</ENDTIME></NODE><NODE><NODENAME>审批</NODENAME><STEP>3</STEP><STATE>1</STATE><TIMELIMIT>1</TIMELIMIT><STARTTIME>2020-08-24 16:12:27</STARTTIME><ENDTIME>2020-08-24 16:12:27</ENDTIME></NODE><NODE><NODENAME>办结</NODENAME><STEP>4</STEP><STATE>1</STATE><TIMELIMIT>1</TIMELIMIT><STARTTIME>2020-08-24 16:12:27</STARTTIME><ENDTIME>2020-08-24 16:12:27</ENDTIME></NODE></NODES>";
        NODES result=toJavabean(testXml);
        System.out.println("ssssss");

    }

}