Java 使用JAXB创建类时出错

Java 使用JAXB创建类时出错,java,xml,jaxb,Java,Xml,Jaxb,我第一次使用JAXB并尝试使用xsd文件创建类文件,但不幸的是出现了错误 这是我的xsd: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="DbOperation" type="DbOperation"/> &l

我第一次使用JAXB并尝试使用xsd文件创建类文件,但不幸的是出现了错误

这是我的xsd:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="DbOperation" type="DbOperation"/>

  <xs:complexType name="DbOperation">
    <xs:sequence>
      <xs:element name="ruleList" minOccurs="0">
    <xs:complexType>
    <xs:sequence>
        <xs:element ref="Rule" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
      </xs:element> 
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Rule">
    <xs:sequence>
      <xs:element name="Action" type="xs:string" minOccurs="0"/>
      <xs:element name="TableName" type="xs:string" minOccurs="0"/>
      <xs:element name="conditionList" minOccurs="0">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="Conditions" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
      </xs:element> 
     </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Conditions">
    <xs:sequence>
      <xs:element name="Condition" type="Condition" minOccurs="0"/>
      <xs:element name="Operator" type="xs:string" minOccurs="0"/>
      <xs:element name="Condition" type="Condition" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType> 

  <xs:complexType name="Condition">
    <xs:sequence>
      <xs:element name="fieldName" type="xs:string" minOccurs="0"/>
      <xs:element name="Operation" type="xs:string" minOccurs="0"/>
      <xs:element name="Value" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>
未能分析架构

这是我为其创建xsd的示例xml:

<?xml version="1.0" encoding="UTF-8"?>
<DbOperation>

      <Rule>
            <Action>Delete</Action>
            <TableName>
                  issue
            </TableName>
            <Conditions>
                  <Condition>
                        <fieldName>
                trader
                        </fieldName>
                        <Operation>
                >=
                        </Operation>
                        <Value>
                250
                        </Value>
                  </Condition>
                  <Operator>AND</Operator>

                  <Condition>
                        <fieldName>
                traderName
                        </fieldName>
                        <Operation>
                =
                        </Operation>
                        <Value>
                jk
                        </Value>
                  </Condition>
            </Conditions>
      </Rule>

</DbOperation>

删除
问题
交易者
>=
250
及
贸易名称
=
jk

首先使用XML编辑器验证您的模式

您正在引用一个类型,就像它是一个元素一样

  <xs:element ref="Conditions" minOccurs="0" maxOccurs="unbounded"/>

  <xs:complexType name="Conditions">
    <xs:sequence> ....

....

“REF”属性表示元素和不是类型

错误可以通过两种方式更正:

第一:

<xs:complexType name="DbOperation">
    <xs:sequence>
      <xs:element name="ruleList" minOccurs="0">
         <xs:complexType>
            <xs:sequence>
               <xs:element name="Rule" type="Rule" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:complexType>
      </xs:element> 
    </xs:sequence>
  </xs:complexType>

第二:

<xs:complexType name="DbOperation">
    <xs:sequence>
      <xs:element name="ruleList" minOccurs="0">
         <xs:complexType>
            <xs:sequence>
               <xs:element ref="Rule" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:complexType>
      </xs:element> 
    </xs:sequence>
  </xs:complexType>

<xs:element name="Rule" type="Rule"/>

<xs:complexType name="DbOperation">
    <xs:sequence>
      <xs:element name="ruleList" minOccurs="0">
         <xs:complexType>
            <xs:sequence>
               <xs:element name="Rule" type="Rule" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:complexType>
      </xs:element> 
    </xs:sequence>
  </xs:complexType>
<xs:complexType name="DbOperation">
    <xs:sequence>
      <xs:element name="ruleList" minOccurs="0">
         <xs:complexType>
            <xs:sequence>
               <xs:element ref="Rule" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
         </xs:complexType>
      </xs:element> 
    </xs:sequence>
  </xs:complexType>

<xs:element name="Rule" type="Rule"/>