【问题标题】:Can Jaxb handle type attributes in Xml SchemaJaxb 可以处理 Xml Schema 中的类型属性吗
【发布时间】:2015-11-24 18:22:59
【问题描述】:

刚刚从

修改了我的 Xml 架构
.......
<xs:element name="mood1">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="positive" type="xs:boolean"/>
      <xs:element name="probability" type="xs:float"/>
    </xs:sequence>
  </xs:complexType>
</xs:element> 
<xs:element name="mood2">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="positive" type="xs:boolean"/>
      <xs:element name="probability" type="xs:float"/>
    </xs:sequence>
  </xs:complexType>
</xs:element> 

..........  
<xs:complexType name="category">
   <xs:sequence>
     <xs:element name="positive" type="xs:boolean"/>
     <xs:element name="probability" type="xs:float"/>
   </xs:sequence>`enter code here`
 </xs:complexType>
 <xs:element name="mood1" type="category"/>
 <xs:element name="mood2" type="category"/>
 ...........

简化它。

但是现在当我使用 JAXB (2.2.5) 为它抱怨的架构生成 Java 类时

 src-resolve: Cannot resolve the name 'category' to a(n) 'type definition' component.
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
        at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
        at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:437)
        at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(XSDHandler.java:4162)
        at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaError(XSDHandler.java:4145)
        at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getGlobalDecl(XSDHandler.java:1741)
        at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDElementTraverser.traverseNamedElement(XSDElementTraverser.java:405)
        at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDElementTraverser.traverseGlobal(XSDElementTraverser.java:242)
        at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.traverseSchemas(XSDHandler.java:1433)
        at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(XSDHandler.java:630)
        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(XMLSchemaLoader.java:616)
        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:574)
        at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:540)
        at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:255)
        at com.sun.tools.xjc.reader.xmlschema.parser.SchemaConstraintChecker.check(SchemaConstraintChecker.java:101)
        at com.sun.tools.xjc.ModelLoader.loadXMLSchema(ModelLoader.java:357)
        at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:167)
        at com.sun.tools.xjc.ModelLoader.load(ModelLoader.java:113)
        at org.jvnet.jaxb2.maven2.RawXJC2Mojo.loadModel(RawXJC2Mojo.java:630)
        at org.jvnet.jaxb2.maven2.RawXJC2Mojo.doExecute(RawXJC2Mojo.java:258)
        at org.jvnet.jaxb2.maven2.RawXJC2Mojo.execute(RawXJC2Mojo.java:134)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
        at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
        at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
        at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
        at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)

jaxb 不能处理 type 属性吗?

刚刚更新到 JAXB 2.2.11 但没有任何区别

【问题讨论】:

    标签: java xml xsd jaxb


    【解决方案1】:

    当然可以。

    您使用的 category 没有任何前缀。为此,请确保 xmlns="..." 与架构的 targetNamespace 匹配。

    请随时发布您的完整架构供我们检查。

    【讨论】:

    • 啊,是的,你说的很对,当我从元素中引用复杂类型时,我需要指定名称,现在可以了,谢谢。
    猜你喜欢
    • 2012-05-03
    • 2012-01-01
    • 2014-08-06
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    相关资源
    最近更新 更多