# 用Jersey構建RESTful服務2--JAVA對象轉成XML輸出
## 一、 總體說明
XML和JSON 是最為常用的數據交換格式。本例子演示如何將java對象,轉成XML輸出。
## 二、流程
1. 在上文的例子中,創建一個包“com.waylau.rest.bean”
2. 在該包下創建一個JAVA類"User"
```
package com.waylau.rest.bean;
import javax.xml.bind.annotation.XmlRootElement;
/* *
* 用戶 bean
* @author waylau.com
* 2014-3-17
*/
@XmlRootElement
public class User {
private String userId;
private String userName;
private String age;
public User() {};
public User(String userId, String userName, String age) {
this.userId = userId;
this.userName = userName;
this.age = age;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
```
注意:該類上面增加了一個注解“@XmlRootElement”,在將該類轉化成XML時,說明這個是XML的根節點。
3. 在“com.waylau.rest.resources”中,增加資源“UserResource“,代碼如下:
```
package com.waylau.rest.resources;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import com.waylau.rest.bean.User;
@Path("/users")
public class UserResource {
private static Map<String,User> userMap = new HashMap<String,User>();//存儲用戶
/**
* 查詢所有
* @return
*/
@GET
@Produces(MediaType.APPLICATION_XML)
public List<User> getAllUsers(){
List<User> users = new ArrayList<User>();
User u1 = new User("001","WayLau","26");
User u2 = new User("002","King","23");
User u3 = new User("003","Susan","21");
userMap.put(u1.getUserId(), u1);
userMap.put(u2.getUserId(), u2);
userMap.put(u3.getUserId(), u3);
users.addAll( userMap.values() );
return users;
}
@GET
@Path("/getUserXml")
@Produces(MediaType.APPLICATION_XML)
public User getUserXml() {
User user = new User();
user.setAge("21");
user.setUserId("004");
user.setUserName("Amand");
return user;
}
}
```
其中MediaType.APPLICATION_XML 說明了是以XML形式輸出
在瀏覽器輸入[http://localhost:8089/RestDemo/rest/users/getUserXml](http://localhost:8089/RestDemo/rest/users/getUserXml),輸出單個對象

在瀏覽器輸入 [http://localhost:8089/RestDemo/rest/users](http://localhost:8089/RestDemo/rest/users) 輸出對象的集合

**本章源碼**:[https://github.com/waylau/RestDemo/tree/master/jersey-demo2-xml](https://github.com/waylau/RestDemo/tree/master/jersey-demo2-xml)
- 用Jersey構建RESTful服務
- 用Jersey構建RESTful服務1--HelloWorld
- 用Jersey構建RESTful服務2--JAVA對象轉成XML輸出
- 用Jersey構建RESTful服務3--JAVA對象轉成JSON輸出
- 用Jersey構建RESTful服務4--通過jersey-client客戶端調用Jersey的Web服務模擬CURD
- 用Jersey構建RESTful服務5--Jersey+MySQL5.6+Hibernate4.3
- 用Jersey構建RESTful服務6--Jersey+SQLServer+Hibernate4.3
- 用Jersey構建RESTful服務7--Jersey+SQLServer+Hibernate4.3+Spring3.2
- 用Jersey構建RESTful服務8--Jersey+SQLServer+Hibernate4.3+Spring3.2+jquery
- 用Jersey構建RESTful服務9--Jersey+SQLServer+Hibernate4.3+Spring3.2+AngularJS
- 用 Jersey 2 和 Spring 4 構建 RESTful web service