Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JAXB";如果类具有@XmlElement属性,则它不能具有@XmlValue属性;_Java_Xml_Xml Serialization_Jaxb - Fatal编程技术网

Java JAXB";如果类具有@XmlElement属性,则它不能具有@XmlValue属性;

Java JAXB";如果类具有@XmlElement属性,则它不能具有@XmlValue属性;,java,xml,xml-serialization,jaxb,Java,Xml,Xml Serialization,Jaxb,我正在尝试使用JAXB定义XML到Java对象绑定。一切正常,除非我尝试生成XML,比如这个: 获得价格 只读 从对象,该类定义类似于此: @XmlRootElement(name=“request”) 公共类请求{ @XmlValue 公共字符串getCommandID(){返回“获取价格”;}; @XmlElement 公共字符串getSessionID(){返回“只读”;}; } 我得到以下例外情况: 如果类具有@XmlElement属性,则它不能具有@XmlValue属性。 如果

我正在尝试使用JAXB定义XML到Java对象绑定。一切正常,除非我尝试生成XML,比如这个


获得价格
只读
对象,该类定义类似于此

@XmlRootElement(name=“request”)
公共类请求{
@XmlValue
公共字符串getCommandID(){返回“获取价格”;};
@XmlElement
公共字符串getSessionID(){返回“只读”;};
}
我得到以下例外情况:

如果类具有@XmlElement属性,则它不能具有@XmlValue属性。
如果我将“sessionId”元素更改为一个属性,那么一切正常,但我当然希望它成为一个元素

我认为JAXB应该是非常灵活的,我确信我遗漏了一些明显的东西


您能帮忙吗?

commandId
也设为元素有什么问题吗?e、 g

<request>
    <commandId>Get Price</commandId>
    <sessionId>read-only</sessionId>
</request>

您希望映射的XML文档类型称为具有“混合内容”。相应的XML架构如下所示:

<xs:element name="request">
    <xs:complexType mixed="true">
        <xs:sequence>
            <xs:element name="sessionId" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

这意味着文本节点可以与元素节点混合出现。虽然转换示例文档的规则看起来很琐碎,但以下文档也是有效的,并且规则不太清晰

<request>
    Get Price
    <sessionId>read-only</sessionId>
    More Text
</request>

获得价格
只读
更多文本
混合文本有它的用途,但通常是不赞成的。首选方法是使用问题中描述的XML属性:

<request sessionId="read-only">Get Price</request>
获取价格
要了解JAXB如何处理混合文本,请参见
@XmlMixed
注释:


太好了,谢谢!现在,我希望JAXB能够在消息中提到
@XmlMixed
注释,它通常擅长生成有意义的错误消息另一方面,我应该先看说明书;-)Blaise,您能否详细介绍一下如何使用@XmlMixed注释来实现问题中描述的输出?我有完全相同的要求。我无法控制输出是什么,我只需要匹配它。一个第三方程序接受XML作为输入,格式是混合的,所以我的手被束缚住了……//顺便问一下,为什么这是一个常量?>我不是故意搞混的,只是为了说明一下。谢谢
<request sessionId="read-only">Get Price</request>