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="连连看">