当我从以下架构生成代码时,会创建两个类,A
和B
。但是,这两个类没有被 @XmlRootElement
注释。 ,因此当我尝试编码(marshal) B 的实例时出现错误。
我在网上查看过,尝试使用自定义绑定(bind)( <xjc: simple/>
)的解决方案,但它不起作用。看来必须在架构中定义类型 B 的元素才能使此解决方案发挥作用。
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns:ns="com:mycomp:service" xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="com:mycomp:service"
elementFormDefault="qualified" xml:lang="EN">
<complexType name="A" abstract="true">
<sequence>
<element name="a1" type="string" />
<element name="a2" type="string" />
</sequence>
</complexType>
<complexType name="B">
<complexContent>
<extension base="ns:A">
<sequence>
<element name="b1" type="string" />
</sequence>
</extension>
</complexContent>
</complexType>
</schema>
谢谢
最佳答案
如果相关顶部元素(通常是单个根元素)的类型是匿名的,XJC 将仅生成 @XmlRootElement。
例如。像(未经测试):
<element name='B'>
<complexType>
<complexContent>
<extension base="ns:A">
<sequence>
<element name="b1" type="string" />
</sequence>
</extension>
</complexContent>
</complexType>
</element>
关于java - JAXB 不使用 XmlRootElement 进行注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12848612/