JAXB解析xml

來源:互聯網
上載者:User

大家知道xml常用的解析方式有DOM, SAX, StAX三種.如果使用這幾種中的一種解析, 顯然還是比較麻煩的.<br />可以使用JAXB(Java Architecture for XML Binding)<br />Person<br />public class Person implements Serializable {<br /> private String name;</p><p> private Integer age;</p><p> private char sex;</p><p> public Person() {<br /> }</p><p> public String getName() {<br /> return name;<br /> }</p><p> public void setName(String name) {<br /> this.name = name;<br /> }</p><p> public Integer getAge() {<br /> return age;<br /> }</p><p> public void setAge(Integer age) {<br /> this.age = age;<br /> }</p><p> public char getSex() {<br /> return sex;<br /> }</p><p> public void setSex(char sex) {<br /> this.sex = sex;<br /> }</p><p>}</p><p>@XmlRootElement(name = "persons")<br />public class Persons extends ArrayList<Person> { // 泛化, 彙總</p><p> @XmlElement(name = "person")<br /> public List<Person> getPersons() {<br /> return this;<br /> }<br />}</p><p>寫xml<br />public static void main(String[] args) {<br /> try {<br /> // javax.xml.bind.JAXBException: class com.fjh658.pojo.Persons nor<br /> // any of its super class is known to this context.<br /> JAXBContext cxt = JAXBContext.newInstance(Persons.class);<br /> Marshaller marshaller = cxt.createMarshaller();</p><p> Persons persons = new Persons();<br /> for (int i = 0; i < 50; i++) {<br /> Person p = new Person();<br /> p.setName("zhangsan" + i);<br /> p.setAge(20 + i);<br /> p.setSex('1');</p><p> persons.add(p);<br /> }<br /> marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");// 編碼格式<br /> marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否格式化產生的xml串<br /> marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);// 預設false表示xml指令存在</p><p> // marshaller.marshal(persons, System.out);<br /> marshaller.marshal(persons, new File("./test.xml"));<br /> } catch (JAXBException e) {<br /> e.printStackTrace();<br /> }</p><p> }</p><p>讀xml<br />public class ReadTest {</p><p> public static void main(String[] args) {<br /> try {<br /> JAXBContext cxt = JAXBContext.newInstance(Persons.class);<br /> Unmarshaller unmarshaller = cxt.createUnmarshaller();<br /> List<Person> persons = (List<Person>) unmarshaller.unmarshal(new File("./test.xml"));</p><p> if (persons != null) {<br /> for (Person p : persons) {<br /> if (p != null) {<br /> System.out.println(p.getName());<br /> }<br /> }<br /> }<br /> } catch (JAXBException e) {<br /> e.printStackTrace();<br /> }</p><p> }<br />}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.