2013-11-27 69 views
-1

可能是我重複這個問題與前一個問題(Define namespaces tags so that generated XML have those tags?)相比,但因爲在我以前的問題,這個範圍限於XStream,這就是爲什麼我需要問這個新的問題。如何使用JAXB輸出命名空間的XML?

我有兩個類People.java和PeopleMain.java

People.java

package com.test; 

public class People { 

    private String name; 
    private String age; 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getAge() { 
     return age; 
    } 
    public void setAge(String age) { 
     this.age = age; 
    } 

} 

PeopleMain.java

package com.test; 

import com.thoughtworks.xstream.XStream; 

public class PeopleMain { 

    public static void main(String args[]){ 

     People p= new People(); 

     p.setAge("21"); 
     p.setName("Manish Sharma"); 

     String xml = //JAXB code to get xml from Person p object 

     System.out.println(xml);  
    } 
} 

我的控制檯輸出運行PeopleMain.java之際, :

<com.test.People> 
    <name>Manish Sharma</name> 
    <age>21</age> 
</com.test.People> 

但我想作爲

<People xmlns:ns2="http://example.com/foo" xmlns:ns3="http://example.com/bar"> 
    <ns2:name>Manish Sharma</ns2:name> 
    <ns3:age>21</ns3:age> 
</People> 

輸出我應該讓我的People.java文件什麼樣的變化,以獲得所需的輸出?

+0

如果你寫「請不要低估和回答」,你可能已經猜到它畢竟不是一個好問題。也許你想改進它。 –

回答

2

你可以做以下,並指定在@XmlElement註釋命名空間:

import javax.xml.bind.annotation.*; 

@XmlRootElement(name="People") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class People { 

    @XmlElement(namespace="http://example.com/foo") 
    private String name; 

    @XmlElement(namespace="http://example.com/bar") 
    private int age; 

} 

更多信息