我想知道我們如何從XSD文件中創建一個java中的對象樹。有沒有這樣的框架?如何從Java中的xsd創建對象樹?
函數簽名將在一定程度接近的:
TreeSet<Object> convertToTree(File xsdFile);
所以,你可以看到功能convertToTree
應該讀XSD文件,並生成一個樹集合。
有人可以張貼一些例子嗎?
我想知道我們如何從XSD文件中創建一個java中的對象樹。有沒有這樣的框架?如何從Java中的xsd創建對象樹?
函數簽名將在一定程度接近的:
TreeSet<Object> convertToTree(File xsdFile);
所以,你可以看到功能convertToTree
應該讀XSD文件,並生成一個樹集合。
有人可以張貼一些例子嗎?
您可以使用JAXB解決此問題。據我所知,它甚至整合在Netbeans中。
在NetBeans:
選擇項目 - >右鍵 - >新
選擇其他 - >類別= XML;文件類型= JAXB綁定
其餘的應該是自我解釋。
但是,如果你沒有一個XSD定義的固定XML的方案,但要顯示一個XSD文件中定義的XML-方案的結構,你可以做到以下幾點:
由於xsd文件總是xml文件,因此您應該編寫一個描述xsd文件的xsd文件。 (我確定已經有一個xsd文件的方案)。然後,您可以使用上述的xsd文件對其他xsd文件進行編組和解組。但是我沒有測試這種解決方案
有其自帶的JDK,你可以從命令行運行,通過你的模式作爲參數「XJC的效用。它會生成代表模式結構的Java類。然後,您可以使用這些類將XML轉換爲Java表示並返回(請參閱JAXB和編組/解組)。
如果你需要一個例子看generate JAXB classes from an XML schema file或
做這樣的:"%java_home%\bin\xjc" -p [package_name] [xsd_file].xsd
JAXB的+1。下面是使用從JAXB和XMLBeans生成的對象模型進行並排比較:http://blog.bdoughan.com/2012/01/how-does-jaxb-compare-to-xmlbeans.html – 2012-02-15 12:29:16
在有一些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元素運行項目。
+1 - JAXB也集成到Eclipse中。只需右鍵單擊您的XML模式,然後:Generate | JAXB類... – 2012-02-15 12:27:14
其實問題不在於創建一個時間對象。我需要生成來自各種xsds的Java對象的樹作爲輸入 –
Anand
2012-02-17 06:15:18
這不會創建一個時間對象。它創建了一組表示在xsd中定義的xml結構的類。使用JAXB.marshal和JAXB.unmarshal,您可以通過解析xml文件並使用對象創建xml文件來創建對象。或者你的基本意圖是什麼?也許我誤解了這一點。 – AlexS 2012-02-17 10:22:16