D05*_*1P0 4 java jax-ws jaxb xjc
我正在尝试从 XSD 生成 Java 源代码,并且必须使用 JAXWS 禁用包装器样式。我已经编写了自定义绑定,但 JAXWS 似乎不适用于 XJC。我使用的绑定非常简单。
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:jaxws="http://java.sun.com/xml/ns/jaxws" xmlns="http://java.sun.com/xml/ns/jaxws"
version="2.1" jaxb:extensionBindingPrefixes="xjc">
<jaxb:bindings>
<jaxb:globalBindings typesafeEnumMaxMembers="2000" generateElementProperty="false" >
<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
</jaxb:globalBindings>
</jaxb:bindings>
Run Code Online (Sandbox Code Playgroud)
如果我尝试运行 ant 脚本,我会收到以下错误消息。
[xjc] [ERROR] Unsupported binding namespace "http://java.sun.com/xml/ns/jaxws". Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc"?
[xjc] line 2 of file:/D:/xxxxxxxxxx/xxxxx/xxxx.xsd
[xjc] [ERROR] cvc-complex-type.2.4.a: Invalid content was found starting with element 'jaxws:enableWrapperStyle'. One of '{"http://java.sun.com/xml/ns/jaxb":javaType, "http://java.sun.com/xml/ns/jaxb":serializable, "http://java.sun.com/xml/ns/jaxb/xjc":serializable, "http://java.sun.com/xml/ns/jaxb/xjc":superClass, "http://java.sun.com/xml/ns/jaxb/xjc":superInterface, "http://java.sun.com/xml/ns/jaxb/xjc":typeSubstitution, "http://java.sun.com/xml/ns/jaxb/xjc":smartWildcardDefaultBinding, "http://java.sun.com/xml/ns/jaxb/xjc":simple, "http://java.sun.com/xml/ns/jaxb/xjc":treatRestrictionLikeNewType, "http://java.sun.com/xml/ns/jaxb/xjc":javaType, "http://java.sun.com/xml/ns/jaxb/xjc":generateElementProperty, "http://java.sun.com/xml/ns/jaxb/xjc":noMarshaller, "http://java.sun.com/xml/ns/jaxb/xjc":noUnmarshaller, "http://java.sun.com/xml/ns/jaxb/xjc":noValidator, "http://java.sun.com/xml/ns/jaxb/xjc":noValidatingUnmarshaller}' is expected.
[xjc] line 8 of file:/D:/xxxxxxxxxx/xxxxx/xxxx/xsd/xsd-binding.xml
Run Code Online (Sandbox Code Playgroud)
我已经尝试仅使用 jaxws,但 XJC 期望 JAXB 作为主要绑定。通过此绑定:
<bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://java.sun.com/xml/ns/jaxws"
jaxb:version="2.1" extensionBindingPrefixes="xjc annox">
<enableWrapperStyle>false</enableWrapperStyle>
<jaxb:bindings>
<jaxb:globalBindings typesafeEnumMaxMembers="2000" generateElementProperty="false" />
</jaxb:bindings>
</bindings>
Run Code Online (Sandbox Code Playgroud)
我收到错误:
[xjc] [ERROR] not an external binding file. The root element must be {http://java.sun.com/xml/ns/jaxb}bindings but it is {http://java.sun.com/xml/ns/jaxws}bindings
[xjc] line ? of file:/D:/xxxxxx/xsd-binding.xml
[xjc] [ERROR] Unexpected <bindings> appears at line 4 column 61
[xjc] line 4 of file:/D:/xxxxxx/xsd-binding.xml
Run Code Online (Sandbox Code Playgroud)
可以使用jaxws:enableWrapperStyle
jaxb内部吗?如果是的话,我忽略了什么?先感谢您!
我找到了解决方案。JAXWS 元素必须位于 JAXB 元素内部,并且必须声明如下:
<?xml version="1.0"?>
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.1" jaxb:extensionBindingPrefixes="xjc annox">
<jaxws:bindings xmlns:jaxws="http://java.sun.com/xml/ns/jaxws">
<jaxws:enableWrapperStyle>false</jaxws:enableWrapperStyle>
</jaxws:bindings>
<jaxb:bindings>
<jaxb:globalBindings typesafeEnumMaxMembers="2000" generateElementProperty="false"/>
</jaxb:bindings>
</jaxb:bindings>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9454 次 |
最近记录: |