使用XJC(JAXB)将XSD转换为Java对象会导致[ERROR]属性";“价值”;已定义。使用&;书信电报;jaxb:property>;解决这一冲突

使用XJC(JAXB)将XSD转换为Java对象会导致[ERROR]属性";“价值”;已定义。使用&;书信电报;jaxb:property>;解决这一冲突,java,xml,xsd,jaxb,xjc,Java,Xml,Xsd,Jaxb,Xjc,与此相关的答案很多,但出于某种原因,我仍然感到困惑,无法获取XSD的Java对象 我试图使用xjcjaxb从XSD创建Java对象,但是当我运行XJC命令时,它会导致错误 [ERROR]属性“Value”已定义。使用jaxb:property>解决此冲突。 因此,根据我的研究,我发现我需要编写绑定文件,所以我编写了绑定文件,但仍然得到了相同的错误,这意味着我在绑定文件中弄乱了一些东西。由于我无法使它工作,即使经过了很多尝试,我想张贴它,并得到一些解决方案 下面是我的XSD,它根据XJC命令失败消

与此相关的答案很多,但出于某种原因,我仍然感到困惑,无法获取XSD的Java对象

我试图使用
xjcjaxb
从XSD创建Java对象,但是当我运行XJC命令时,它会导致错误

[ERROR]属性“Value”已定义。使用jaxb:property>解决此冲突。

因此,根据我的研究,我发现我需要编写绑定文件,所以我编写了绑定文件,但仍然得到了相同的错误,这意味着我在绑定文件中弄乱了一些东西。由于我无法使它工作,即使经过了很多尝试,我想张贴它,并得到一些解决方案

下面是我的XSD,它根据XJC命令失败消息
foo.XSD
失败:

  <xsd:complexType name="DocumentExtensionType">
    <xsd:sequence>
      <xsd:any namespace="##local" processContents="lax" maxOccurs="unbounded"/>
    </xsd:sequence>
    <xsd:anyAttribute processContents="lax"/>
  </xsd:complexType>
下面是我尝试过的另一个
JAXB
绑定:
foo.xjb

<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" version="2.1">

    <jxb:bindings schemaLocation="foo.xsd">
        <jxb:bindings
            node="//xsd:complexType[@name='DocumentExtensionType']/xsd:sequence/xsd:choice/xsd:any[@namespace='http://checklists.nist.gov/sccf/0.1']">
            <jxb:property name="any2" />
        </jxb:bindings>
    </jxb:bindings>

</jxb:bindings>
<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          version="2.1">

    <bindings schemaLocation="foo.xsd" version="1.0">
        <schemaBindings>
            <package name="com.track.doc"/>
        </schemaBindings>    
        <bindings node="//xsd:complexType[@name='DocumentExtensionType']/xsd:sequence/xsd:any[@namespace='']">
            <property name="any2"/>
        </bindings>
    </bindings>
    
</bindings>

以下是我在终端中运行的命令:

xjc-p“com.track.doc”-d”/Users/batman/Downloads/XSD”-b foo.xjb foo.XSD


有人能告诉我我做错了什么吗?

在尝试了很多东西之后,这段代码终于为我工作了。然而,我只发布了一个XSD块,当我为这个小块运行它时,它失败了,然后它工作了,但是当我为整个XSD运行时,它仍然失败。不完全确定出了什么问题

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
          xmlns:xsd="http://www.w3.org/2001/XMLSchema"
          version="2.1">

    <bindings schemaLocation="foo.xsd" version="1.0">
        <schemaBindings>
            <package name="com.track.doc"/>
        </schemaBindings>    
        <bindings node="//xsd:complexType[@name='DocumentExtensionType']/xsd:sequence">
            <property name="seq1"/>
        </bindings>
    </bindings>
    
</bindings>

我在XSD中注意到的另一个问题。如果您也有类似的问题,那么以下内容可能会有所帮助:

确保作为输入传递的XSD文件没有任何名称为值的字段。 在我的例子中,我有一个带有
name=“value”
的字段


我把它换成了

<xsd:attribute type="xsd:float" name="floatValue" use="optional"/>

此外,请确保作为输入传递的
XSD
文件中没有任何带有
名称
作为
的字段。在我的例子中,我有一个带有
name=“value”
的字段<代码>我将其替换为
<xsd:attribute type="xsd:float" name="floatValue" use="optional"/>