2013-11-27 68 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; 

} 

更多信息