2012-02-15 42 views
1

我想知道我們如何從XSD文件中創建一個java中的對象樹。有沒有這樣的框架?如何從Java中的xsd創建對象樹?

函數簽名將在一定程度接近的:

TreeSet<Object> convertToTree(File xsdFile); 

所以,你可以看到功能convertToTree應該讀XSD文件,並生成一個樹集合。

有人可以張貼一些例子嗎?

回答

2

您可以使用JAXB解決此問題。據我所知,它甚至整合在Netbeans中。

在NetBeans:

選擇項目 - >右鍵 - >新

選擇其他 - >類別= XML;文件類型= JAXB綁定

其餘的應該是自我解釋。

但是,如果你沒有一個XSD定義的固定XML的方案,但要顯示一個XSD文件中定義的XML-方案的結構,你可以做到以下幾點:

由於xsd文件總是xml文件,因此您應該編寫一個描述xsd文件的xsd文件。 (我確定已經有一個xsd文件的方案)。然後,您可以使用上述的xsd文件對其他xsd文件進行編組和解組。但是我沒有測試這種解決方案

+0

+1 - JAXB也集成到Eclipse中。只需右鍵單擊您的XML模式,然後:Generate | JAXB類... – 2012-02-15 12:27:14

+0

其實問題不在於創建一個時間對象。我需要生成來自各種xsds的Java對象的樹作爲輸入 – Anand 2012-02-17 06:15:18

+0

這不會創建一個時間對象。它創建了一組表示在xsd中定義的xml結構的類。使用JAXB.marshal和JAXB.unmarshal,您可以通過解析xml文件並使用對象創建xml文件來創建對象。或者你的基本意圖是什麼?也許我誤解了這一點。 – AlexS 2012-02-17 10:22:16

2

有其自帶的JDK,你可以從命令行運行,通過你的模式作爲參數「XJC的效用。它會生成代表模式結構的Java類。然後,您可以使用這些類將XML轉換爲Java表示並返回(請參閱JAXB和編組/解組)。

5

您可以選擇使用JAXBXMLBean的選項。

如果你需要一個例子看generate JAXB classes from an XML schema file

做這樣的:"%java_home%\bin\xjc" -p [package_name] [xsd_file].xsd

+1

JAXB的+1。下面是使用從JAXB和XMLBeans生成的對象模型進行並排比較:http://blog.bdoughan.com/2012/01/how-does-jaxb-compare-to-xmlbeans.html – 2012-02-15 12:29:16

0

在有一些elememnt類型的XML模式定義(XSD),這些都是根元素,同時在與對象樹xsd文件。

由於Kuldeep說,這XSD文件可與JAXB(Java體系XML綁定)和JavaBean類。這將使用setter和getter方法生成bean類,以從bean對象中檢索數據。

例如,Example.xsd文件具有結構如下所述。

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema targetNamespace="http://www.project.com/folder/Example" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:vsi="http://www.project.com/folder/Example" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" jxb:version="1.0"> 
    <xs:annotation> 
     <xs:appinfo> 
      <jxb:schemaBindings> 
       <jxb:package name="com.folder.jaxb.beans.example" /> 
      </jxb:schemaBindings> 
     </xs:appinfo> 
    </xs:annotation> 

然後用屬性及其屬性定義元素。

然後建立由具有腳本運行Ant然後生成與XSD對象樹一個新的bean類build.xml文件。

之後,您可以使用xml元素運行項目。