JAXB编译问题-“错误]属性”;任何;已定义

JAXB编译问题-“错误]属性”;任何;已定义,jaxb,eclipselink,moxy,Jaxb,Eclipselink,Moxy,我正在尝试为XCDF-1.1.4.xsd创建JAXB绑定,这是一个可以从 我目前使用EclipseLink MOXy作为我的JAXB实现,因为我喜欢它也可以生成JSON绑定 我修复了几次使用外部绑定XML时遇到臭名昭著的“[ERROR]属性”value“已经定义”错误的情况,现在我遇到了一个错误 [ERROR] Property "Any" is already defined. Use <jaxb:property> to resolve this conflict. li

我正在尝试为XCDF-1.1.4.xsd创建JAXB绑定,这是一个可以从

我目前使用EclipseLink MOXy作为我的JAXB实现,因为我喜欢它也可以生成JSON绑定

我修复了几次使用外部绑定XML时遇到臭名昭著的“[ERROR]属性”value“已经定义”错误的情况,现在我遇到了一个错误

[ERROR] Property "Any" is already defined. Use <jaxb:property> to resolve this conflict.
line 441 of file:/home/dchu/Playground/Java/eclipselink_moxy/xccdf_1.1.4/xccdf-1.1.4.xsd

[ERROR] The following location is relevant to the above error
line 444 of file:/home/dchu/Playground/Java/eclipselink_moxy/xccdf_1.1.4/xccdf-1.1.4.xs
下面是发生错误的XML模式中的一行代码片段

<xsd:sequence>
    <xsd:choice minOccurs="1" maxOccurs="1">
      <xsd:any namespace="http://purl.org/dc/elements/1.1/"
               minOccurs="1" maxOccurs="unbounded"/>
      <xsd:any namespace="http://checklists.nist.gov/sccf/0.1"
               processContents="skip" 
               minOccurs="1" maxOccurs="unbounded"/>
    </xsd:choice>
</xsd:sequence>


有人知道这里可能出了什么问题吗?谢谢

您可以使用外部绑定文件重命名任何属性之一

binding.xml


XMLSchema(Schema.xsd)

以下是XML模式的简化版本:


XJC呼叫

下面是如何进行利用外部绑定文件的XJC调用

xjc -b binding.xml schema.xsd
生成类(Foo)

package org.example.schema;
导入java.util.*;
导入javax.xml.bind.annotation.*;
导入org.w3c.dom.Element;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name=“foo”,proporter={
“任何”,
“any2”
})
公开课Foo{
@xmlanyement(lax=true)
任何受保护的清单;
@XmlAnyElement
受保护列表any2;
公共列表getAny(){
if(any==null){
any=新的ArrayList();
}
归还这个。任何;
}
公共列表getAny2(){
if(any2==null){
any2=新的ArrayList();
}
把这个还给我;
}
}

当使用javajaxb实现生成JAXB绑定时,使用Blaise的建议创建JAXB外部绑定XML是可行的

但是,当使用EclipseLink MOXy jaxb-compiler.sh时,它不起作用。Blaise说这可能是编译器脚本中的一个bug


目前解决这个问题的方法是使用JDK中的JavaXJC命令,并在生成的目录中手动添加jaxb.properties文件

当我使用Eclipse时,我尝试了所有这些解决方案,但它们确实没有帮助我。所以我切换到Netbeans,它确实给了我同样的错误,只是一个对话框显示了或多或少相同的错误消息,但细节较少

这是最美妙的部分,Netbeans确实创建了客户机服务!是的,带有该错误消息。

您只需按如下方式创建web服务客户端:
1.右键单击项目,
2.新的
3.Web服务客户端
4.选择WSDL URL并粘贴URL
5.单击finish,然后它将创建有错误的客户端。

因此,我在我的项目中找到了生成的WSDL文件,搜索文件中出现的“any”,并在同一标记中每秒对文件中出现的内容进行注释

在注释同一标记中的所有第二次出现后保存文件。右键单击Web服务(首先展开Web服务引用),单击刷新。您的Web服务客户端将很好地运行,只需拖放方法并使用您的参数调用它们

这对我有用