自动化立体仓库 - WMS系统
#
luxiaotao1123
2021-07-13 150d611c06326e0d3d4a57b0b3d6a23b442b75e3
#
4个文件已添加
230 ■■■■■ 已修改文件
src/main/java/com/zy/common/utils/XmlUtils.java 90 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/webservice/mock/Computer.java 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/webservice/mock/Demo.java 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/webservice/mock/XmlMock.java 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/zy/common/utils/XmlUtils.java
New file
@@ -0,0 +1,90 @@
package com.zy.common.utils;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.*;
/**
 * Created by vincent on 2021/7/13
 */
public class XmlUtils {
    // 将对象直接转换成String类型的 XML输出
    public static String objToXml(Object obj) {
        // 创建输出流
        StringWriter sw = new StringWriter();
        try {
            // 利用jdk中自带的转换类实现
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
            Marshaller marshaller = context.createMarshaller();
            // 格式化xml输出的格式
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
            // 将对象转换成输出流形式的xml
            marshaller.marshal(obj, sw);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return sw.toString();
    }
    // 将String类型的xml转换成对象
    public static Object xmlToObj(Class<?> cls, String xmlStr) {
        Object xmlObject = null;
        try {
            JAXBContext context = JAXBContext.newInstance(cls);
            // 进行将Xml转成对象的核心接口
            Unmarshaller unmarshaller = context.createUnmarshaller();
            StringReader sr = new StringReader(xmlStr);
            xmlObject = unmarshaller.unmarshal(sr);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return xmlObject;
    }
    // 将对象根据路径转换成xml文件
    public static void convertToXml(Object obj, String path) {
        try {
            // 利用jdk中自带的转换类实现
            JAXBContext context = JAXBContext.newInstance(obj.getClass());
            Marshaller marshaller = context.createMarshaller();
            // 格式化xml输出的格式
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                    Boolean.TRUE);
            // 将对象转换成输出流形式的xml
            // 创建输出流
            FileWriter fw = null;
            try {
                fw = new FileWriter(path);
            } catch (IOException e) {
                e.printStackTrace();
            }
            marshaller.marshal(obj, fw);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
    }
    // 将file类型的xml转换成对象
    public static Object convertXmlFileToObject(Class<?> cls, String xmlPath) {
        Object xmlObject = null;
        try {
            JAXBContext context = JAXBContext.newInstance(cls);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            FileReader fr = null;
            try {
                fr = new FileReader(xmlPath);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            xmlObject = unmarshaller.unmarshal(fr);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
        return xmlObject;
    }
}
src/main/java/com/zy/common/webservice/mock/Computer.java
New file
@@ -0,0 +1,45 @@
package com.zy.common.webservice.mock;
import lombok.Data;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import java.io.Serializable;
import java.util.Date;
/**
 * Created by vincent on 2021/7/13
 */
@Data
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "Computer")
@XmlType(propOrder = { "serialNumber", "brandName", "productDate", "price" })
public class Computer implements Serializable {
    private static final long serialVersionUID = 1L;
    // 序列号
    private String serialNumber;
    // 品牌名
    private String brandName;
    // 生成日期
    private Date productDate;
    // 价格
    private double price;
    public Computer() {
        super();
    }
    public Computer(String serialNumber, String brandName, Date productDate,
                    double price) {
        super();
        this.serialNumber = serialNumber;
        this.brandName = brandName;
        this.productDate = productDate;
        this.price = price;
    }
}
src/main/java/com/zy/common/webservice/mock/Demo.java
New file
@@ -0,0 +1,60 @@
package com.zy.common.webservice.mock;
import lombok.Data;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
/**
 * Created by vincent on 2021/7/13
 */
@Data
@XmlAccessorType(XmlAccessType.FIELD)
// XML文件中的根标识
@XmlRootElement(name = "Demo")
// 控制JAXB 绑定类中属性和字段的排序
@XmlType(propOrder = {
        "userId",
        "userName",
        "password",
        "birthday",
        "money",
        "computers"
})
public class Demo implements Serializable {
    private static final long serialVersionUID = 1L;
    // 用户Id
    private int userId;
    // 用户名
    private String userName;
    // 用户密码
    private String password;
    // 用户生日
    private Date birthday;
    // 用户钱包
    private double money;
    // 拥有的电脑
    private List<Computer> computers;
    public Demo() {
        super();
    }
    public Demo(int userId, String userName, String password, Date birthday,
                double money) {
        super();
        this.userId = userId;
        this.userName = userName;
        this.password = password;
        this.birthday = birthday;
        this.money = money;
    }
}
src/main/java/com/zy/common/webservice/mock/XmlMock.java
New file
@@ -0,0 +1,35 @@
package com.zy.common.webservice.mock;
import com.alibaba.fastjson.JSON;
import com.zy.common.utils.XmlUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
 * Created by vincent on 2021/7/13
 */
public class XmlMock {
    public static void main(String[] args) {
        Demo demo = new Demo(1, "Steven", "@sun123", new Date(), 1000.0);
        List<Computer> list = new ArrayList<Computer>();
        list.add(new Computer("xxxMMeedd", "asus", new Date(), 4455.5));
        list.add(new Computer("lenvoXx", "lenvo", new Date(), 4999));
        demo.setComputers(list);
        System.out.println("---将对象转换成xml Start---");
        String xml = XmlUtils.objToXml(demo);
        System.out.println(xml);
        System.out.println("---将对象转换成File类型的xml End---");
        System.out.println();
        System.out.println("---将xml转换成对象 Start---");
        Demo demo1 = (Demo) XmlUtils.xmlToObj(Demo.class, xml);
        System.out.println(JSON.toJSONString(demo1));
        System.out.println("---将File类型的xml转换成对象 End---");
    }
}