【问题标题】:Generate Different types of XMl with same class using JAXB使用 JAXB 生成具有相同类的不同类型的 XMl
【发布时间】:2016-03-21 08:24:09
【问题描述】:

我有一门课:

@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 创建另一个类来做到这一点,但我想为此使用相同的类。 请帮帮我。

【问题讨论】:

  • 请添加投票理由。

标签: java xml jaxb


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您正在使用 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 元素的原始类进行更改。

    【讨论】:

    • 添加拒绝投票的理由。它有助于改进。
    • 他说他知道如何改变它来生成元素。但他想使用同一个类来生成两个不同的输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2019-08-04
    相关资源
    最近更新 更多