java 中xml转换为Bean

最近用到,记录一个自己写的demo

 

  1. 在根元素上使用@XmlRootElement注解,name为元素名
  2. 子元素属性使用@XmlElement,name为元素名
  3. 若有属性,例如,则使用@XmlAttribute,name为属性名

 

 

xml:



    
        [email protected]
        abc123_
        John Smith
        24
        Male
    
    
        [email protected]
        123456
        Christine Chen
        27
        Female
    

 

Employees:

import java.util.List;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "employees")
public class Employees {

    private List eList;
    @XmlElement(name = "employee")
    public List geteList() {
        return eList;
    }

    public void seteList(List eList) {
        this.eList = eList;
    }

}

Employee:

import javax.xml.bind.annotation.XmlElement;

public class Employee {
    private String userId;
    private String password;
    private String name;
    private String age;
    private String gender;
    @Override
    public String toString() {
        return "Employee [userId=" + userId + ", password=" + password
                + ", name=" + name + ", age=" + age + ", gender=" + gender
                + "]";
    }
    @XmlElement(name="userId")
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }
    @XmlElement(name="password")
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @XmlElement(name="name")
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @XmlElement(name="age")
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    @XmlElement(name="gender")
    public String getGender() {
        return gender;
    }
    public void setGender(String gender) {
        this.gender = gender;
    }

}

 

解析类

 

@Component
@XmlRootElement(name = "employees")
public class XmlMapping {
    private List eList;

    @XmlElement(name = "employee")
    public List getList() {
        return eList;
    }

    public void setList(List eList) {
        this.eList = eList;
    }

    /**
     * 文件映射路径
     */
    private String resoursePath = Objects.requireNonNull(XmlMapping.class.getClassLoader().getResource("empolyee.xml")).getFile();

    @PostConstruct
    public void init() {
        try {
            System.out.println(resoursePath);
            JAXBContext context = JAXBContext.newInstance(XmlMapping.class);
            Unmarshaller createUnmarshaller = context.createUnmarshaller();
            Object unmarshal = createUnmarshaller.unmarshal(
                    new File(resoursePath));
            XmlMapping em = (XmlMapping) unmarshal;
            List list = em.getList();
            System.out.println(list);
            eList=list;
        } catch (Exception e) {
            //LOG
        }
    }


}

 

你可能感兴趣的:(JAVA)