java JAXB“如果一个类具有@XmlElement属性,它就不能具有@XmlValue属性。”
我正在尝试使用JAXB定义XML到Java对象绑定。除了我试图生成XML,比如这个,一切都正常:
<request>
Get Price
<sessionId>read-only</sessionId>
</request>
来自对象,该类定义为此:
@XmlRootElement(name="request")
public class Request {
@XmlValue
public String getCommandID() { return "Get Price"; };
@XmlElement
public String getSessionID() { return "read-only"; };
}
我得到了以下例外:
If a class has @XmlElement property, it cannot have @XmlValue property.
如果我将“sessionId”元素更改为一个属性,那么一切都很好,但我当然希望它成为一个元素
我认为JAXB应该是非常灵活的,我确信我遗漏了一些明显的东西
你能帮忙吗
# 1 楼答案
把
commandId
也当作元素有什么不对吗?e、 g及
# 2 楼答案
您希望映射的XML文档类型被称为具有“混合内容”。相应的XML模式如下所示:
这意味着文本节点可以与元素节点混合出现。虽然转换示例文档的规则看起来很琐碎,但以下文档也是有效的,而且规则也不太清晰
混合文本有它的用途,但通常不被接受。首选方法是使用问题中描述的XML属性:
要了解JAXB如何处理混合文本,请参见
@XmlMixed
注释: