JAXB简化插件仍然可用?

我在这里试着解决这个问题JAXB简化插件vs * .xjb。

但以下例外情况失败

“编译器无法承认这种简化:as-element-property定制,它被附加到错误的地方,或者与其他绑定不一致。”

这是我使用的自定义绑定

<jaxb:bindings node="//xs:complexType[@name='Op']//xs:choice/xs:element[@name='Time']">
  <simplify:as-element-property/>
</jaxb:bindings>

jaxb的简化插件汇合页面是不可访问的,所以有谁使用过这个插件,可以举个例子吗?

根据答案,这是我更新的模式

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"   attributeFormDefault="unqualified" xmlns="http://www.amadeus.com/APT/FOM/00" targetNamespace="http://www.amadeus.com/APT/FOM/00" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"  xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:simplify="http://jaxb2-commons.dev.java.net/basic/simplify" jaxb:extensionBindingPrefixes="simplify">  
 ...
 ...
<xs:complexType>
  <xs:sequence>
     <xs:choice minOccurs="1" maxOccurs="1">
        <xs:element name="Time" type="xs:dateTime" minOccurs="1" maxOccurs="1">
            <xs:annotation>                 
              <xs:appinfo>
                <simplify:as-element-property />
              </xs:appinfo>
            </xs:annotation>
        </xs:element>            
        ... ...
     </xs:choice>
     ...

在maven构建中,例如“Unsupported binding namespace”http://jaxb2-commons.dev.java.net/basic/simplify“,我得到了异常。或许你的意思是”http://jaxb.dev.java.net/plugin /代码注射器“?”


免责声明:我是简化插件的作者,这是JAXB2基础的一部分。

该项目的插件很好,但是我的文档服务器不时死亡。 我没有资源来维护自己的主机,因此我将所有项目移到GitHub上。

您可以在这里找到JAXB2基础项目:

https://github.com/highsource/jaxb2-basics

文档还没有移动,但是这里有一个使用它的测试项目的链接:

https://github.com/highsource/jaxb2-basics/tree/master/tests/issues

以下是使用了simplify:as-element-property的模式片段simplify:as-element-property customization:

<xs:complexType name="gh1" mixed="true">
    <xs:sequence>
        <xs:element name="a" type="xs:string">
            <xs:annotation>
            <xs:appinfo>
                <simplify:as-element-property/>
            </xs:appinfo>
        </xs:annotation>
        </xs:element>
        <xs:element name="b" type="xs:int"/>
    </xs:sequence> 
</xs:complexType>

我会在几个小时内将服务器重新联机。

请张贴您的架构/定制供我们检查。 您遇到的问题可能是您将自定义设置放在了错误的地方。 这有时很难弄清楚。


更新

这个错误:

"Unsupported binding namespace "http://jaxb2-commons.dev.java.net/basic/simplify". Perhaps you meant "http://jaxb.dev.java.net/plugin/code-injector"?"

意味着插件缺失或未激活。 我假设你使用maven-jaxb2-plugin 。 然后确保你有jaxb2-basics作为JAXB2插件,并且还包含-Xsimplify开关。 这里有一个例子:

        <plugin>
            <groupId>org.jvnet.jaxb2.maven2</groupId>
            <artifactId>maven-jaxb2-plugin</artifactId>
            <configuration>
                <extension>true</extension>
                <args>
                    <arg>-Xsimplify</arg>
                </args>
                <plugins>
                    <plugin>
                        <groupId>org.jvnet.jaxb2_commons</groupId>
                        <artifactId>jaxb2-basics</artifactId>
                    </plugin>
                </plugins>
            </configuration>
        </plugin>

接下来,您的原始错误“无法兑现此...定制”可能与您在何处放置定制相关。 你已经把它放在元素上(这也是我所做的)。

但是在某些情况下,XJC从其他模式组件读取这些自定义项。 在你的情况下,尝试将定制放在xs:choice

如果错误仍然存​​在,请在GitHub上提供一个问题,提供重现错误的最小模式。 那么我会照顾它。

更新2

服务器重新联机,但现在我已将JAXB2 Simplify插件的文档移动到GitHub:

https://github.com/highsource/jaxb2-basics/wiki/JAXB2-Simplify-Plugin

更新3

0.9.1版本的最终解决方案如下所示:

https://github.com/highsource/jaxb2-basics/issues/3

用以下方式自定义课程:

<simplify:property name="type2OrType3"> <simplify:as-element-property/> </simplify:property>

例。

链接地址: http://www.djcxy.com/p/82227.html

上一篇: JAXB Simplify plugin still usable?

下一篇: Ems instead of px in Chrome developer tools?