Xml 序列化与反序列化 xml转换成对象 对象转xml

package com.djz.tools.xml;

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

public class XmlUtils {
    /**
     * @Author: djz
     * @Description: xml转换成对象
     * @DateTime: 2020/8/7 9:47
     * @Params: 
     * @Return 
     */
    public static Object xmlStrToOject(Class<?> clazz, String xmlStr) throws Exception {
        Object xmlObject = null;
        Reader reader = null;
        JAXBContext context = JAXBContext.newInstance(clazz);
        /*Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);// 是否省略xml头信息*/
        // XML 转为对象的接口
        Unmarshaller unmarshaller = context.createUnmarshaller();
        reader = new StringReader(xmlStr);
        //以文件流的方式传入这个string
        xmlObject = unmarshaller.unmarshal(reader);
        if (null != reader) {
            reader.close();
        }
        return xmlObject;
    }
    /**
     * @Author: djz
     * @Description: 对象转换成xml
     * @DateTime: 2020/8/7 9:47
     * @Params: 
     * @Return 
     */
    public static String convertToXml(Object object) {
        // 创建输出流
        StringWriter sw = new StringWriter();
        try {
            // 利用jdk中自带的转换类实现
            JAXBContext context = JAXBContext.newInstance(object.getClass());

            Marshaller marshaller = context.createMarshaller();
            // 格式化xml输出的格式
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                    Boolean.TRUE);
            // 将对象转换成输出流形式的xml
            marshaller.marshal(object, sw);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sw.toString();
    }
   /* Object strToXml(String str, Class clas) throws JAXBException {
        Object unmarshal = null;
        JAXBContext context = JAXBContext.newInstance(clas);
        Unmarshaller createUnmarshaller = context.createUnmarshaller();
        unmarshal = createUnmarshaller.unmarshal(new StringReader(str));
        //SheetDetail sheetDetail = (SheetDetail) unmarshal;
        return unmarshal;

    }*/

   /**
    * @Author: djz
    * @Description: 测试类
    * @DateTime: 2020/8/7 9:48
    * @Params: 
    * @Return 
    */
   public static void main(String[] arge)
   {
       String str="<user>    " +
               "        <userInfo> \n" +
               "            <name>张三</name>\n" +
               "            <age>111</age>\n" +
               "            <mobileNumber>12345678910</mobileNumber>\n" +
               "        </userInfo>\n"+
               "    </user>";
       try {
          User user= (User)xmlStrToOject(User.class,str);

           String strxml=convertToXml(user);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }

}


package com.djz.tools.xml;

import org.springframework.stereotype.Component;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;

/**
* @ClassName Users
* @Description TODO
* @date 2020/8/7 9:21
* @Version 1.0
*/
@Component
@XmlRootElement(name = "user")
public class User {
    private List<UserInfo> userInfos;
    @XmlElement(name = "userInfo")
    public List<UserInfo> getUserInfos() {
        return userInfos;
    }

    public void setUserInfos(List<UserInfo> userInfos) {
        this.userInfos = userInfos;
    }


}

package com.djz.tools.xml;

import org.springframework.stereotype.Component;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;

/**
* @ClassName UserInfo
* @Description TODO
* @date 2020/8/7 9:21
 * @Version 1.0
 */
@Component
@XmlRootElement(name = "userInfo")
public class UserInfo {
    private String name;
    private Integer age;
    private String mobileNumber;

    @XmlElement(name = "name")
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @XmlElement(name = "age")
    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @XmlElement(name = "mobileNumber", required = true/*, nillable = true*/)
    public String getMobileNumber() {
        return mobileNumber;
    }

    public void setMobileNumber(String mobileNumber) {
        this.mobileNumber = mobileNumber;
    }
}

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.djz</groupId>
    <artifactId>tools</artifactId>
    <version>1.1.1</version>


    <dependencies>
        <!-- https://mvnrepository.com/artifact/commons-net/commons-net -->
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>3.6</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.15</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>3.15</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.jcraft/jsch -->
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.54</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.11</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.3.RELEASE</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>

    </build>


</project>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值