gpt4 book ai didi

java - 使用子元素的 JAXB 注释

转载 作者:数据小太阳 更新时间:2023-10-29 02:07:00 25 4
gpt4 key购买 nike

我负责编码和解码消息。我有这样的 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 类型分配给独立类,因为我在不同的消息中经常使用它:

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

@XMLElement(name="messageId")
private String messageId;
//getters and setters
}

但是我有不需要的标签包装 MessageId。我要:

<Message>
<MessageId>1111</MessageId>
</Message>

但是得到了:

<Message>
<MessageIdType>
<MessageId>1111</MessageId>
</MessageIdType>
</Message>

另外 Messages 不能继承一些带有 messageId 字段的基类。我可以这样写吗?:

//inside Message
@SomeAnnotation(useOnlyChildFields=true)
MessageIdClass msgId;

最佳答案

你可以这样做:

@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);

创建这种类型的元素。这通常在 ObjectFactory 中完成,使用接收 MessageIdClass 对象的方法,用 @XmlElementDecl 注释。

关于java - 使用子元素的 JAXB 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7446731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com