xml:
<?xml version="1.0" encoding="utf-8"?>
<myDocument>
<desc>sky</desc>
<myPerson>
<person name="sky1" age="18"/>
<person name="sky2" age="19"/>
</myPerson>
</myDocument>
- 定義好各個xml元素對應的javabean,在類上加註解@XmlRootElement(name = “xxx”)
- 在各個子元素對應的java字段上(如desc、myPerson)加註解 @XmlElement(name = “xxx”)
- 其中person的xml標籤比較特殊,具有name和age這2個屬性,需要做特殊處理:不能直接在name字段上加註解,而是需要先建立set或者get方法,在方法上加註解@XmlAttribute(name = “xxx”)
@XmlRootElement(name = "myDocument")
class MyDocument{
@XmlElement(name = "desc")
private String desc;
@XmlElement(name = "myPerson")
private MyPerson myPerson;
}
@XmlRootElement(name = "person")
class Person{
private String name;
private int age;
@XmlAttribute(name = "name")
public void setName(String name) {
this.name = name;
}
@XmlAttribute(name = "age")
public void setAge(int age) {
this.age = age;
}
}
@XmlRootElement(name = "myPerson")
class MyPerson{
@XmlElement(name = "person")
private List<Person> person;
}
public class TestXml {
public static void main(String[] args) throws Exception{
String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<myDocument>\n" +
" <desc>sky</desc>\n" +
" <myPerson>\n" +
" <person name=\"sky1\" age=\"18\"/>\n" +
" <person name=\"sky2\" age=\"19\"/>\n" +
" </myPerson>\n" +
"</myDocument>";
JAXBContext context = JAXBContext.newInstance(MyDocument.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
StringReader sr = new StringReader(xml);
MyDocument myDocument = (MyDocument) unmarshaller.unmarshal(sr);
System.out.println(myDocument);
}
}