Java中xmltype⽤法_@XmlAccessorType@XmlType详解例⼦:
@XmlAccessorType(XmlAccessType.FIELD)
String name=”CY”;
}
public static void main(String[] args){
JAXBContent context = wInstance(Boy.class);java xml是什么
Marsheller marsheller = ateMarsheller();
UnMarsheller unmarsheller = ateUnMarsheller();
Boy boy = new Boy();
marsheller.marshel(boy,System.out);
System.out.println();
String xml=”David”;
Boy boy2 = (Boy)unmarsheller.unmarshel(new StringReader(xml));
System.out.println(boy2.name);
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>CY
David
先是marshall成 xml⽂件,
@XmlAccessorType(XmlAccessType.FIELD) --> @XmlAccessorType(XmlAccessType.PROPERTY)
所以再运⾏的结果是:
CY
-----------------------------------------------------
在 改动⼀ 的基础上,给name属性添加 get set ⽅法。 再运⾏,结果为:
David
由此 可见 @XmlAccessorType 这个annotation 的作⽤。
@XmlRootElement
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {
String name = "CY";
int age = 10;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
@XmlRootElement // bixude
@XmlAccessorType(XmlAccessType.PROPERTY)
public class Boy {
String name = "CY";
@XmlElement
int age = 10;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>10 CY David
对于根元素,可以设置属性:
标签。并且加上⼀个命名空间。这样,在⽣成的xml⽂件中, 标签 就会变为 标签。并且加上⼀个命名空间。下⾯解释 @XmlJavaTypeAdaptor 的作⽤。
private Address address; // 是⼀个接⼝
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
所以 这⾥要加上 @XmlJavaTypeAdapter(AddressAdapter.class)
这个类会返回Address接⼝的⼀个具体实现类的对象。
这 就是 @XmlJavaTypeAdapter 的作⽤
@XmlType
默认情况下,Jaxb编组出来的xml中的字段顺序是随机的,你可以使⽤@XmlType的propOrder属性来指定序列化的顺序。
定义java类时,使⽤@XmlType(propOrder = { "id", "name", "age","book"})指定输出顺序。package step2;
import java.util.Set;
l.bind.annotation.XmlElement;
l.bind.annotation.XmlElementWrapper;
l.bind.annotation.XmlRootElement;
l.bind.annotation.XmlType;
@XmlRootElement
@XmlType(propOrder = { "id", "name", "age","book"})
public class Customer {
String name;
int age;
int id;
Set book;
@XmlElement(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name="age")
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@XmlElement(name="id")
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "Customer [id=" + id + ",name=" + name + ",age=" + age + ",book=" + book + "]"; }
@XmlElementWrapper(name="books")
@XmlElement(name="book")
public Set getBook() {
return book;
}
public void setBook(Set book) {
this.book = book;
}
}
输出的xml:
注:
1.对于@XmlElementWrapper标注的属性,不能出现在@XmlType的propOrder列表中。
2.对于所有@XmlElement标注过的属性,必须出现在@XmlType的propOrder列表中。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论