Java 用于使用子元素的JAXB注释

Java 用于使用子元素的JAXB注释,java,xml,jaxb,Java,Xml,Jaxb,我做封送和解封邮件。 我有如下XML类型: @XMLAccesorType(AccesorType.FIELD) @XMLType(name="Header") public class Header{ @XMLElement(name="messageId") private String messageId; //getters and setters } 我有以下类型的消息: <Message> <messageId>1111</messageId>

我做封送和解封邮件。 我有如下XML类型:

@XMLAccesorType(AccesorType.FIELD)
@XMLType(name="Header")
public class Header{

@XMLElement(name="messageId")
private String messageId;
//getters and setters
}
我有以下类型的消息:

<Message>
<messageId>1111</messageId>
</Message>
但是我有一个不需要的标记,它包装了MessageId。 我想:


我相信
@XmlValue
就是您要寻找的,这将消除
messageId
元素:

@XmlAccesorType(XmlAccesorType.FIELD)
@XmlType(name="MessageIdType")
public class MessageIdClass{

    @XmlValue
    private String messageId;
    //getters and setters
}
了解更多信息

您可以执行以下操作:

@XmlType(name="MessageIdType")
public class MessageIdClass{
    @XmlValue
    private String messageId;
}
这将创建一个简单类型

如果需要多个属性,或者所需的一个属性无法映射到简单类型,则仍可以创建具有多个属性的类型,然后使用:

new JAXBElement<MessageIdClass>(
    new QName("http://foo/bar", "ElementOfThisType"),
    MessageIdClass.class,
    null,
    object_of_type_MessageIdClass);
newjaxbelement(
新QName(“http://foo/bar“,“该类型的元素”),
MessageIdClass.class,
无效的
对象(类型为消息类);

创建此类型的元素。这通常是在
ObjectFactory
中完成的,方法接收
MessageIdClass
对象,并用
@xmlementdecl
进行注释。您能解释一下
吗?但是我有一个不需要的标记,它包装了MessageId。
//inside Message
@SomeAnnotation(useOnlyChildFields=true)
MessageIdClass msgId;
@XmlAccesorType(XmlAccesorType.FIELD)
@XmlType(name="MessageIdType")
public class MessageIdClass{

    @XmlValue
    private String messageId;
    //getters and setters
}
@XmlType(name="MessageIdType")
public class MessageIdClass{
    @XmlValue
    private String messageId;
}
new JAXBElement<MessageIdClass>(
    new QName("http://foo/bar", "ElementOfThisType"),
    MessageIdClass.class,
    null,
    object_of_type_MessageIdClass);