jaxb解析xml处理list

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xingxiupaioxue/article/details/85329312

package com.everise.entity;


import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;


@XmlRootElement  
@XmlAccessorType(XmlAccessType.FIELD) 
public class UserModel implements Serializable{
     
    /**
     * 
     */
    private static final long serialVersionUID = 612685720634981013L;

    private List<String> nameList = new ArrayList<>();  
   
    public List<String> getNameList() {
        return nameList;
    }
    public void setNameList(List<String> nameList) {
        this.nameList = nameList;
    }
    public static void main(String[] args) throws Exception {  
        JAXBContext jc = JAXBContext.newInstance(UserModel.class);  
   
        UserModel userModel = new UserModel();  
        userModel.getNameList().add("aaa");  
        userModel.getNameList().add("bbb");  
   
        Marshaller marshaller = jc.createMarshaller();  
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);  
        marshaller.marshal(userModel, System.out);  
    } 
    
}
默认的把这个对象输出为一般的XML: 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userModel>
    <nameList>aaa</nameList>
    <nameList>bbb</nameList>
</userModel>

@XmlElement(name="guess")  
  private List<String> nameList = new ArrayList<>(); 
加上这个注解的话,则按自定义的xml标签名去输出某个属性,如下: 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userModel>
    <guess>aaa</guess>
    <guess>bbb</guess>
</userModel>
2) @XmlElementWrapper 
  这个注解等于在最外面再包一层了, 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userModel>
    <names>
        <name>aaa</name>
        <name>bbb</name>
    </names>
</userModel>
 

3) @XmlList 
  这个等于是在同一行中,把list中的输出,以空格形式分隔开来, 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userModel>
    <nameList>aaa bbb</nameList>
</userModel>
 

4) 
@XmlList和 @XmlAttribute混合使用 

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userModel nameList="aaa bbb"/>

5) 
  @XmlList 和 @XmlValue混用 
    

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userModel>aaa bbb</userModel>

其他注意事项

必须写

@XmlRootElement(name="advan")
@XmlAccessorType(XmlAccessType.FIELD)

否则报错

对应xml的头文件

<?xml version="1.0" encoding="utf-8" ?>
<advan type="aay" name="连连看">

猜你喜欢

转载自blog.csdn.net/xingxiupaioxue/article/details/85329312