使用JAXB生成具有相同类的不同类型的XMl

时间:2016-03-21 08:24:10

标签: java xml jaxb

我有一节课:

@XmlRootElement(name="pickup")
public class PickUp 
{
    @XmlAttribute(name="contactName")
    public String contactName;
    @XmlAttribute(name="phoneNumber")
    public String phoneNumber;
    @XmlAttribute(name="pickupDate")
    public String pickupDate;
    @XmlAttribute(name="pickupTime")
    public String pickupTime;
    @XmlAttribute(name="closingTime")
    public String closingTime;
    @XmlAttribute(name="location")
    public String location;
}

这将生成如下的XMl:

<Pickup contactName="Test Name" phoneNumber="888-888-8888" pickupDate="2009-08-03" pickupTime="16:30" closingTime="17:45" location="Front Door"/>

这是完美的,但是使用相同的代码我也想生成如下的Xml:

<Pickup>
        <contactName>Test Name</contactName>
        <phoneNumber>888-888-8888</phoneNumber>
        <pickupDate>2009-08-03</pickupDate>
        <pickupTime>16:30</pickupTime>
        <closingTime>17:45</closingTime>
        <location>Front Door</location>
</Pickup>

我可以通过使用@xmlElement创建另一个类来完成此操作,但我想为此使用相同的类。 请帮帮我。

2 个答案:

答案 0 :(得分:0)

我发现这个可以帮助你的https://stackoverflow.com/a/33096124/1976843答案。

如果你想继续使用jaxb,你需要编写自己的AnnotationReader

答案 1 :(得分:-1)

您正在使用XML属性的标记。使用@XmlElement标记以您所需的格式生成XML,您应该将标记设为

@XmlElement  
public String getContactName() {  
    return contactName;  
}  
public void setcontactName(String name) {  
    this.contactName= name;  
}  
@XmlElement  
public String getphoneNumber() {  
    return phoneNumber;  
}  
public void setphoneNumber(String phoneNumber) {  
    this.phoneNumber = phoneNumber;  
}  

无需创建新类。您可以对xml元素的原始类进行更改。