2011-07-18 67 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