java - JAXB 不使用 XmlRootElement 进行注释

标签 java jaxb

当我从以下架构生成代码时,会创建两个类,AB 。但是,这两个类没有被 @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/

相关文章:

java - jhipster 不工作 POST REST API

java - ForkJoinPool.invoke() 和 ForkJoinTask.invoke() 或 compute()

java - MySQL-如何使用单个 SQL 查询获取同一列的多个值?

java - 尝试创建元素列表时出现 JAXB 错误

java - 我想使用 Java 将子元素插入 xml 树中的子元素

java - 单元测试后的回滚顺序

java - Wicket:处理表单时出错;如何跳到onError()?

java - 如何从私有(private)类加载器中创建单例?

java - 如何使用 moxy 将 xsd 编译成一组等效的 java 对象?

jaxb - future 版本的 JDK(JDK 7,8 和 OpenJDK)中对 Sun 的 CodeModel 的支持