代码改变世界

JavaBean To XML By JAXB

2011-12-26 16:09  _9527  阅读(533)  评论(0编辑  收藏  举报

JAXB: 

http://jaxb.java.net/

 

Schema:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://www.sidways.com.cn" xmlns="http://www.sidways.com.cn"
    elementFormDefault="qualified">

    <xs:complexType name="User">
        <xs:sequence>
            <xs:element name="name" type="xs:string" />
            <xs:element name="age" type="xs:string" />
        </xs:sequence>
    </xs:complexType>

    <xs:element name="user" type="User"></xs:element>

    <xs:complexType name="Users">
        <xs:sequence>
            <xs:element ref="user" minOccurs="1" maxOccurs="unbounded"></xs:element>
        </xs:sequence>
    </xs:complexType>

    <xs:element name="users" type="Users"></xs:element>
</xs:schema>


xjc:

$ xjc User.xsd -d src -p entity.userinfo


java:

package test;

import java.util.List;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBElement;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

import entity.userinfo.ObjectFactory;
import entity.userinfo.User;
import entity.userinfo.Users;

public class Test {
    public static void main(String[] args) {
        try {
            JAXBContext jc = JAXBContext.newInstance("entity.userinfo");
            ObjectFactory objFactory = new ObjectFactory();

            User user1 = new User();
            user1.setName("Tom");
            user1.setAge("16");

            User user2 = new User();
            user2.setName("Jay");
            user2.setAge("21");

            Users users = objFactory.createUsers();
            List<User> list = users.getUser();
            list.add(user1);
            list.add(user2);

            JAXBElement<Users> userE = objFactory.createUsers(users);
            Marshaller marshaller = jc.createMarshaller();
            marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
                    Boolean.TRUE);
            marshaller.marshal(userE, System.out);
        } catch (JAXBException e) {
            e.printStackTrace();
        }
    }
}

  

Console:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<users xmlns="http://www.w3school.com.cn">
    <user>
        <name>Tom</name>
        <age>16</age>
    </user>
    <user>
        <name>Jay</name>
        <age>21</age>
    </user>
</users>

  



源码:
XMLtest.zip