【问题标题】:jaxb2 simplify plugin binding issuejaxb2 简化插件绑定问题
【发布时间】:2016-01-07 17:59:15
【问题描述】:

我尝试使用 XJC 2.2.4 使用 JAXB2 简化插件。

D:\>xjc -d . -extension -p org.my.space sample.xsd parsing a schema... [ERROR] Unsupported binding namespace
"http://jaxb2-commons.dev.java.net/basic/simplify". Perhaps you meant
"http://jaxb.dev.java.net/plugin/code-injector"?   line 7 of file:/D:/sample.xsd
Failed to parse a schema.

sample.xsd 有声明的简化

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
    xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify"
    jaxb:extensionBindingPrefixes="simplify"
    xmlns="http://www.example.org/sampleXML" targetNamespace="http://www.example.org/sampleXML"
    elementFormDefault="qualified">

有什么想法吗?

编辑: 我用绑定文件 xjb 尝试了其他方法,但仍然是同样的错误。这是否意味着我的 XJC 版本(2.2)不支持 JAXB2 简化?

xjc -d 。 -extension -b bindings.xjb sample.xsd

<bindings version="2.1"
      xmlns="http://java.sun.com/xml/ns/jaxb"
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify"
      extensionBindingPrefixes="simplify">

    <bindings schemaLocation="sample.xsd" node="/xs:schema">
        <bindings
            node="/xs:schema/xs:complexType[@name='dlist']/xs:choice/xs:element[1]">
            <simplify:as-element-property />
        </bindings>
    </bindings>

</bindings>

【问题讨论】:

  • 在命名空间 URi 中 simplify 之间是否有空格或者这是一个错字?
  • 抱歉错字。现在已更正。

标签: xsd jaxb2 xjc jaxb2-simplify-plugin


【解决方案1】:

我切换到maven jaxb2 plugin 并且经过更多努力,它运行良好。对于未来有困难的人。此设置在 JDK 1.6 中运行良好(适用于仍无法迁移的用户)。

pom.xml

<build>
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <!--  plugin to compile schemas to JAXB classes -->
            <plugin>
                <groupId>org.jvnet.jaxb2.maven2</groupId>
                <artifactId>maven-jaxb21-plugin</artifactId>
                <version>0.13.1</version>
                <executions>
                    <execution>
                        <id>generate-JAXB</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                        <configuration>
                            <forceRegenerate>true</forceRegenerate>
                            <schemaDirectory>src/main/resources</schemaDirectory>
                            <schemaIncludes>
                                <include>sample.xsd</include>
                            </schemaIncludes>
                            <cleanPackageDirectories>true</cleanPackageDirectories>
                        </configuration>
                    </execution>
                </executions>
                <configuration>
                    <extension>true</extension>
                    <args>
                        <arg>-Xsimplify</arg>
                    </args>
                    <plugins>
                        <plugin>
                            <groupId>org.jvnet.jaxb2_commons</groupId>
                            <artifactId>jaxb2-basics</artifactId>
                            <version>0.11.0</version>
                        </plugin>
                    </plugins>
                </configuration>
            </plugin>
        </plugins>
    </build>

我没有使用binding.xjb,因为我已将simplify 直接包含在架构中(因为我有权访问)。

sample.xsd

<xs:complexType name="doclist">
    <xs:sequence>
        <xs:choice minOccurs="0" maxOccurs="unbounded">
            <xs:annotation>
                <xs:appinfo>
                    <simplify:as-element-property />
                </xs:appinfo>
            </xs:annotation>
            <xs:element name="document1" type="type1" />
            <xs:element name="document2" type="type2" />
        </xs:choice>
    </xs:sequence>
    <xs:attribute name="heading" type="xs:string" />
</xs:complexType>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-15
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多