Yin*_*nan 7 jaxb jaxb2-basics xjb jaxb2-simplify-plugin
我在这里尝试了JAXB Simplify插件vs*.xjb的问题解决方案.
但它失败了以下例外
"编译器无法遵循这种简化:as-element-property customization.它附加到错误的地方,或者与其他绑定不一致."
这是我使用的自定义绑定
<jaxb:bindings node="//xs:complexType[@name='Op']//xs:choice/xs:element[@name='Time']">
<simplify:as-element-property/>
</jaxb:bindings>
Run Code Online (Sandbox Code Playgroud)
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>
...
Run Code Online (Sandbox Code Playgroud)
我在maven构建期间得到了异常,例如"不支持的绑定命名空间" http://jaxb2-commons.dev.java.net/basic/simplify ".也许你的意思是" http://jaxb.dev.java.net/plugin/code-injector "?"
免责声明:我是SiXify插件的作者,该插件是JAXB2 Basics的一部分。
该项目的插件运行良好,但是我的文档服务器有时会死掉。我没有资源来维护自己的主机,因此我将所有项目移至GitHub。
您可以在这里找到JAXB2 Basics项目:
https://github.com/highsource/jaxb2-basics
文档尚未移动,但这是使用它的一个测试项目的链接:
https://github.com/highsource/jaxb2-basics/tree/master/tests/issues
以下是使用自定义模式的片段simplify:as-element-property:
<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>
Run Code Online (Sandbox Code Playgroud)
我将在几个小时内使服务器重新联机。
请发布您的架构/自定义,以供我们检查。您可能遇到的问题是您将自定义放置在错误的位置。有时很难弄清楚。
更新资料
这个错误:
"Unsupported binding namespace "http://jaxb2-commons.dev.java.net/basic/simplify". Perhaps you meant "http://jaxb.dev.java.net/plugin/code-injector"?"
Run Code Online (Sandbox Code Playgroud)
表示该插件丢失或未激活。我想你用maven-jaxb2-plugin。然后确保您具有jaxb2-basicsJAXB2插件,并且还包含了该-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>
Run Code Online (Sandbox Code Playgroud)
接下来,您的原始错误“无法兑现此……定制”可能与您在何处进行定制有关。您已将其放置在元素上(这也是我要做的)。
但是在某些情况下,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>
实例。
| 归档时间: |
|
| 查看次数: |
1550 次 |
| 最近记录: |