2012-10-31 52 views
0

我想從我爲Java應用程序編寫的XML中創建模型類。 什麼是一些好的工具從我寫的XML轉換自動生成的類? 來自我的XML文件的示例。XML數據建模工具

<list name="NameValuePairListDefinition"> 
    <member target="NameValuePair" /> 
    </list> 

    <structure name="PositiveIntegerList"> 
    <member name="list" target="PositiveIntegerListDefinition" /> 
    </structure> 

回答

2

如果您正在使用Java並想要生成類,我會強烈建議使用XMLbeans。它配備了一些不錯的實用工具,包括:

  • inst2xsd:給出的XML,它生成XSD

    inst2xsd -enumerations never message.xml

    (會生成XSD文件,並禁用任何枚舉相同類型)

  • SCOMP:編譯架構成罐子文件,這意味着它產生一個相當不錯的可重複使用的庫您包含基於該架構的命名空間的類(或多個類)(或noNamespace.something開始)如果你沒有定義任何在你的XML

    scomp -jar yourschema mySchema.xsd

    (產生xmltypes.jar - 這是你想要的jar,只是其重命名爲一些聰明和使用對於雙人房,方法解析爲獲得&設定,閱讀&寫值)

  • 最後,只需啓動你的Java IDE,並添加所有XMLBeans的JAR和JAR由SCOMP

然後,您可以創建您的架構用你的xmldata加載,創建,存儲和操作,因爲它只是項目中的java對象;-)

基於你的小XML片段的元素,你會訪問wi看起來屆代碼大致如下:

MyModel myModel = null; 
try { 
    //full path to XML file 
    File modelXML = new File("Model.xml"); 

    // Bind the incoming XML to an XMLBeans type. 
    myModel = MyModel.Factory.parse(modelXML); 
} 
catch (XmlException e) { e.printStackTrace(); } 
catch (IOException e) { e.printStackTrace(); } 
catch (FileNotFoundException e) { e.printStackTrace(); } 

// Using the <structure> element. 
Structure structure = myModel.getStructure(); 
Member member = structure.getMember(); 
String target = member.getTarget(); // "PositiveIntegerListDefinition" 

注:東西我也建議使用未保留的Java關鍵字,如列表元素名稱,我不能完全肯定的XMLBeans將如何應對但我認爲它會稍微重新命名而不是重載。

這裏是一個完整的教程,可以派上用場: http://xmlbeans.apache.org/documentation/tutorial_getstarted.html

我讓你使用的是簡單直接的XML調用或基於REST的Web服務的假設,但如果你決定要更詳細的使用像SOAP有也可以從Apache CXFApache Axis2中很容易地從SOAP XML消息或WSDL生成Java類。

+0

這回答我的問題。我想我將會使用XMLBeans。更多的Google搜索告訴我還有JAXB 2,想知道哪個更好。 – Vineet

+0

似乎圍繞這個已經發生的討論/問題太:http://stackoverflow.com/questions/1362030/jaxb-vs-apache-xmlbeans 有些人更喜歡JAXB 2,因爲它是本地Java,但仍有一些人可以用於XMLBeans的一些次要的性能改進和附加功能,它的確是個人喜好的問題,您是否認爲其值得使用外部第三方庫。如果我有一個小型的個人項目,我幾乎總是會使用XMLBeans,但是如果它是一個更大的複雜企業,我可能會在添加依賴關係之前考慮三次,並堅持使用JAXB。 – bcmoney