2011-07-18 33 views
1

我需要处理的类型和他们的关系在XSD(找到所有具体类型从一个抽象类型等降序) 本页面声称,它通过JAXB是可能的:http://www.antonioshome.net/blog/2009/20091012-1.php但是我收到一个错误与自带的Java 6的XJC该错误是:我可以使用JAXB通过xml模式处理XML模式吗?

[ERROR] Element "{http://www.w3.org/2001/XMLSchema}annotation" shows up in more 
than one properties. 
    line 248 of file:/C:/tmp/xsdProcessing/XMLSchema.xsd 

[ERROR] The following location is relevant to the above error 
    line 242 of file:/C:/tmp/xsdProcessing/XMLSchema.xsd 

我已经看到了这个问题的参考,但我还没有看到这个问题或解决方案的来源的任何明确的解释。 因此,到目前为止,是否可以使用JAXB来处理xml模式的xml模式?如果不是,那么替代方案是什么? JAXB如何处理模式来创建Java对象?

回答

0

是的,你可以让它与xjc一起工作。您遇到的问题是解决此问题时遇到的两个障碍中的第一个障碍。

我并不完全清楚问题的根源,但解决方案是JAXB RI中存在的“更简单,更好的绑定”扩展。它在0123s中有所描述,以及Kohsuke Kawaguchi在其他一些我现在找不到的旧博客文章中。

如果您在运行XJC和一个类似于在my answer to another question具有约束力的文件(尝试编译XMLSchema.xsd当我面临的第二个问题)使用-extension标志你应该有成功。为了公平起见,我还没有真正尝试(un)编组任何导入XML Schema的XML,所以可能还有更多的问题我还没有遇到。

1

看来您的XMLSchema无效。您是否尝试过使用XML处理工具(例如带有XML插件或XmlSpy的Notepad ++)来验证它?

+0

我的XML Schema是http://www.w3.org /2001/XMLSchema.xsd来自w3的xml架构的xml架构。我怀疑它是否有效。人们已经报道成功,看到我给出的链接。在我给出的地址处使用Java 6和xml模式时,我看到了我在问题中包含的错误。 – mahonya

0

我遇到了与JAXB 2.1.10相同的问题。似乎是已知问题JAXB在Java中6.使用以下JAXB绑定文件解决了这个问题:

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

    <jaxb:bindings schemaLocation="XMLSchema.xsd" node="//xs:element[@name='schema']/xs:complexType/xs:complexContent/xs:extension/xs:sequence[1]"> 
     <jaxb:property name="SchemaElements"/> 
    </jaxb:bindings> 
</jaxb:bindings> 

输出:

$ls 
XMLSchema.dtd XMLSchema.xsd bindings.xml datatypes.dtd src xml.xsd 

$xjc -version 
xjc version "JAXB 2.1.10 in JDK 6" 
JavaTM Architecture for XML Binding(JAXB) Reference Implementation, (build JAXB 2.1.10 in JDK 6) 

$xjc -p com.example.document.xsd -d src -extension -b bindings.xml XMLSchema.xsd 
parsing a schema... 
compiling a schema... 
com\example\document\xsd\All.java 
com\example\document\xsd\Annotated.java 
com\example\document\xsd\Annotation.java