Ale*_*exV 3 java xml jaxb xml-serialization
我正在尝试使用JAXB将XML定义为Java对象绑定.一切正常,当我试图除了罚款产生 XML像这样:
<request>
Get Price
<sessionId>read-only</sessionId>
</request>
Run Code Online (Sandbox Code Playgroud)
从像这样定义的类的对象:
@XmlRootElement(name="request")
public class Request {
@XmlValue
public String getCommandID() { return "Get Price"; };
@XmlElement
public String getSessionID() { return "read-only"; };
}
Run Code Online (Sandbox Code Playgroud)
我收到以下异常:
If a class has @XmlElement property, it cannot have @XmlValue property.
Run Code Online (Sandbox Code Playgroud)
如果我将"sessionId"元素更改为属性,一切正常,但我当然希望它是一个元素.
我认为JAXB应该非常灵活,我相信我错过了一些明显的东西.
你能帮忙吗?
您要映射的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>
Run Code Online (Sandbox Code Playgroud)
这意味着文本节点可以与元素节点混合在一起.虽然转换样本文档的规则看似微不足道,但以下文档也是有效的,规则不太清楚.
<request>
Get Price
<sessionId>read-only</sessionId>
More Text
</request>
Run Code Online (Sandbox Code Playgroud)
混合文本有其用途,但通常不赞成.首选方法是使用问题中描述的XML属性:
<request sessionId="read-only">Get Price</request>
Run Code Online (Sandbox Code Playgroud)
要查看JAXB如何处理混合文本,请参阅@XmlMixed注释:
| 归档时间: |
|
| 查看次数: |
7548 次 |
| 最近记录: |