Java 用于使用子元素的JAXB注释
我做封送和解封邮件。 我有如下XML类型: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>
@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);