根据属性,同一xml元素的不同模式类型

时间:2010-11-02 16:46:34

标签: schema xsd jaxb

xml看起来像

<root>
<service name="product" />
<service name="sim" />
<service name="blub" />
</root>

架构应该看起来像

<xs:element name="root">
<xs:complexeType>
<xs:element type='serviceProduct' name='service' />
<xs:element type='serviceSim' name='service' />
<xs:element type='serviceBlub' name='service' />
</xs:complexeType>
</xs:element>

JAXB Bindings可以做到吗?我无法更改xml,但我想为product,sim,blub提供不同的java类,但它们都是相同的xml元素。

使用类绑定declerations可以更改类名,但是如何为同一个元素执行此操作但具有不同的属性?

谢谢, 拉尔夫

1 个答案:

答案 0 :(得分:0)

另一种解决方案是...... Java/JAXB: Unmarshall XML attributes to specific Java object attributes

但我更喜欢架构中的解决方案。它可以像“绑定选择示例”中所描述的那样工作,它显示了如何将选择模型组绑定到Java接口... http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing4.html#wp155808

此解决方案的问题是从JAXB 2.0开始不再允许@bindingStyle属性。

有什么想法吗?