【问题标题】:Error in creating classes using JAXB使用 JAXB 创建类时出错
【发布时间】:2013-11-21 09:33:20
【问题描述】:

我第一次使用 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>

这些是我得到的错误: 解析架构...

[ERROR] src-resolve: Cannot resolve the name 'Rule' to a(n) 'element declaration
' component.
  line 11 of file:/C:/Documents%20and%20Settings/priyanka.jain/Desktop/JAXB/Rule
.xsd
[ERROR] src-resolve: Cannot resolve the name 'Conditions' to a(n) 'element decla
ration' component.
  line 25 of file:/C:/Documents%20and%20Settings/priyanka.jain/Desktop/JAXB/Rule
.xsd
[ERROR] cos-nonambig: Condition and Condition (or elements from their substituti
on group) violate "Unique Particle Attribution". During validation against this
schema, ambiguity would be created for those two particles.
  line 32 of file:/C:/Documents%20and%20Settings/priyanka.jain/Desktop/JAXB/Rule
.xsd

无法解析架构。

这是我为其创建 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>

【问题讨论】:

    标签: java xml jaxb


    【解决方案1】:

    首先使用 XML 编辑器验证您的架构...

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

      <xs:element ref="Conditions" minOccurs="0" maxOccurs="unbounded"/>
    
      <xs:complexType name="Conditions">
        <xs:sequence> ....
    

    【讨论】:

      【解决方案2】:
      <xs:element ref="Rule" minOccurs="0" maxOccurs="unbounded"/>
      

      “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"/>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多