JAVA XML序列化对象 和 对象序列化字符串为

要序列化为对象的XML内容:标签与对象属性一定要一一对应

<com.strato.sboot.query.api.v1__0__0.model.Query>
    <condition>
        <fields>
            <com.strato.sboot.query.api.v1__0__0.model.Condition_-Field>
                <label>姓名</label>
                <name>paramName</name>
                <element class="com.strato.sboot.ui.api.v1_0_0.Text">
                    <id>001</id>
                    <name>text</name>
                    <value>张三</value>
                    <readonly>false</readonly>
                    <disabled>false</disabled>
                    <validateRules>NOTNULL,NUMBER,MAX(100)</validateRules>
                </element>
            </com.strato.sboot.query.api.v1__0__0.model.Condition_-Field>
            <com.strato.sboot.query.api.v1__0__0.model.Condition_-Field>
                <label>门诊号</label>
                <name>paramClinicNumber</name>
                <element class="com.strato.sboot.ui.api.v1_0_0.Text">
                    <id>001</id>
                    <name>text</name>
                    <value>maz001</value>
                    <readonly>false</readonly>
                    <disabled>false</disabled>
                    <validateRules>只能是中文和英文</validateRules>
                </element>
            </com.strato.sboot.query.api.v1__0__0.model.Condition_-Field>
            <com.strato.sboot.query.api.v1__0__0.model.Condition_-Field>
                <label>住院号</label>
                <name>paramHospitalizationNumber</name>
                <element class="com.strato.sboot.ui.api.v1_0_0.Text">
                    <id>001</id>
                    <name>text</name>
                    <value>zyh001</value>
                    <readonly>false</readonly>
                    <disabled>false</disabled>
                    <validateRules>只能是中文和英文</validateRules>
                </element>
            </com.strato.sboot.query.api.v1__0__0.model.Condition_-Field>
            <com.strato.sboot.query.api.v1__0__0.model.Condition_-Field>
                <label>年龄</label>
                <name>paramBirthday</name>
                <element class="com.strato.sboot.ui.api.v1_0_0.DatePicker">
                    <id>001</id>
                    <name>datepicker</name>
                    <value>5</value>
                    <readonly>false</readonly>
                    <disabled>false</disabled>
                    <validateRules></validateRules>
                    <pattern>yyyy-MM-dd</pattern>
                </element>
            </com.strato.sboot.query.api.v1__0__0.model.Condition_-Field>
            <com.strato.sboot.query.api.v1__0__0.model.Condition_-Field>
                <label>诊断</label>
                <name>diagnosis</name>
                <element class="com.strato.sboot.ui.api.v1_0_0.Select">
                    <id>001</id>
                    <name>select</name>
                    <value></value>
                    <readonly>false</readonly>
                    <disabled>false</disabled>
                    <validateRules></validateRules>
                    <dataId>getDiagnosisDataId</dataId>
                    <displayField>text</displayField>
                    <valueField>name</valueField>
                    <multiple>true</multiple>
                </element>
            </com.strato.sboot.query.api.v1__0__0.model.Condition_-Field>
            <com.strato.sboot.query.api.v1__0__0.model.Condition_-Field>
                <label>民族</label>
                <name>nation</name>
                <element class="com.strato.sboot.ui.api.v1_0_0.Select">
                    <id>001</id>
                    <name>select</name>
                    <value>1</value>
                    <readonly>false</readonly>
                    <disabled>false</disabled>
                    <validateRules></validateRules>
                    <dataId>getNationDataId</dataId>
                    <displayField>text</displayField>
                    <valueField>name</valueField>
                    <multiple>false</multiple>
                </element>
            </com.strato.sboot.query.api.v1__0__0.model.Condition_-Field>
        </fields>
        <exportExcel>true</exportExcel>
    </condition>
</com.strato.sboot.query.api.v1__0__0.model.Query>

源码(简陋):
import com.strato.beans.v1_0_0.BeanLifeCycle;
import com.strato.classloader.v1_0_0.OverallBundleContextClassLoader;

import com.strato.serializer.xstream.v1_0_0.impl.ObjectXStreamSerializer;

@Controller
public class QueryController implements BeanLifeCycle {//1.第一步  实现 BeanLifeCycle
    
    private ObjectXStreamSerializer serializer=new ObjectXStreamSerializer(); //2.第二步

    @SuppressWarnings({ "unchecked", "rawtypes" })
    @RequestMapping("/system/condition/index")
    @MenuItem(icon = "am-icon-table sidebar-nav-link-logo", order = 1, text = "条件管理", path = "/system/condition")
    public void index(HttpServletRequest request, HttpServletResponse response, ModelAndView mav) {
        List<Query> queryList = queryService.list();
        Pagination pagination = new Pagination();
        String pageIndex = request.getParameter("pageIndex");
        if (StringUtils.isNotBlank(pageIndex)) {
            pagination.setPageIndex(Long.valueOf(pageIndex));
        } else {
            pagination.setPageIndex(1L);
        }
        pagination.setPageSize(20);
        pagination.setParams(new HashMap<>());
        pagination.setResult(queryList);
         
        mav.getModel().put("pagination", pagination);
        mav.setViewName("index");
    }
    
    @RequestMapping("/system/condition/entity/add")
    public String addview(HttpServletRequest request, HttpServletResponse response, ModelAndView mav) {
        
        return "entity.add";
    }

    @RequestMapping("/system/condition/entity/save")
    public View save(HttpServletRequest request, HttpServletResponse response, ModelAndView mav) {
        
        String jsonInfo = request.getParameter("info");        
        
        try {
            Query query = (Query) JSONUtils.getInstance().fromJSON2Object(jsonInfo, Query.class);

            //开始使用序列化   系列化为对象

            //query.getSql()内容为XMl字符串
            Query query1 = (Query) serializer.deserialize(new StringReader(query.getSql()));
            
            query1.setId(query.getId());
            query1.setName(query.getName());
            query1.setDescription(query.getDescription());
            
            queryService.saveQuery(query1);
        } catch (Exception e) {
            e.printStackTrace();
            return JsonView.fromObject(ResultVOUtil.error(ResultEnum.ERROR.getCode(), "序列化异常,请检查XML内容是否正确"));
        }
   
        return JsonView.fromObject(ResultVOUtil.success());
    }
    
    @RequestMapping("/system/condition/entity/detail")
    public String infoview(HttpServletRequest request, HttpServletResponse response, ModelAndView mav) {
        String queryId = request.getParameter("queryId");
        Query query = queryService.loadQuery(queryId);
        StringWriter writer=new StringWriter(); 
         try {
            serializer.serialize(query, writer);//序列化为xml格式字符串
        } catch (IOException e) {
            e.printStackTrace();
        } 
         String json=writer.toString();//序列化结果
        query.setSql(json);
        mav.getModel().put("query", query);
        return "entity.view";
    }
    
   

    @Override
    public void destroy() {
        
    }

    @Override
    public void init() {
        serializer.setClassLoader(OverallBundleContextClassLoader.getInstance());        //3.第三步
    }
    
}
 

猜你喜欢

转载自blog.csdn.net/qq_35619095/article/details/92988129