2012-08-27 106 views
3

當我運行下面的命令:JAXB轉換XSD到Java類

xjc -b xmlSchema.xjb -d src -p com.q1labs.qa.xmlgenerator.model.generatedxmlclasses xmlSchema.xsd 

它創建但是我發現我的根類沒有正確的名稱,沒有@XmlRootElement其中宣佈其Java類作爲根元素,這意味着當我使用這些類來生成XML時,它不能正確地形成。

XSD架構:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema attributeFormDefault="unqualified" 
    elementFormDefault="qualified" targetNamespace="http://ibm.org/seleniumframework" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="Test" type="sel:TestType" xmlns:sel="http://ibm.org/seleniumframework"/> 

    <xs:complexType name="TestType"> 
     <xs:choice minOccurs="1" maxOccurs="unbounded"> 
      <xs:element type="sel:Option1" name="Option1" xmlns:sel="http://ibm.org/seleniumframework"/> 
      <xs:element type="sel:Option2" name="Option2" xmlns:sel="http://ibm.org/seleniumframework"/> 
      <xs:element type="sel:Option3" name="Option3" xmlns:sel="http://ibm.org/seleniumframework"/> 
     </xs:choice> 
    </xs:complexType> 

這是我得到的輸出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<testType xmlns="http://ibm.org/seleniumframework"/> 

回答

2

生成的類對應的複雜類型。聲明爲全局元素一部分的匿名複雜類型將獲得@XmlRootElement註釋。其他人將在ObjectFactory課上生成@XmlElementDecl註釋。這是因爲可能有多個全局元素對應相同的複雜類型。

更多信息