2011-03-20 56 views
1

我一直在尋找3天,但我找不到解決方案。我想解析XSD文件以在java.I中創建mySql表不想驗證xsd的xsd文件順便一提。XSD到Java中的DBMS

首先,我使用了XSOM,但是我無法修復錯誤NoClassDefFoundError。我想我無法設置這些庫。有些東西不見了。如果你可以給我整個必要的圖書館,它可能會被修復。

其次,我試圖使用org.eclipse.xsd庫,但我不能再做。我找不到如何使用這些類來解析xsd並獲取它的屬性,元素等,然後創建sql表。

最後,我也無法修復SAXParser的問題。

- 順便說一下,有什麼打算做的是:

使用這種模式,我將創建一個數據庫表,

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="Table" type="TableType"/> 
<xs:complexType name="TableType"> 
<xs:sequence> 
<xs:element name="Rows" type="Rows"/> 
</xs:sequence> 
<xs:attribute fixed="Students" name="name" type="xs:string"/> 
<xs:attribute fixed="id" name="Primarykey" type="xs:string"/> 
</xs:complexType> 
<xs:complexType name="Rows"> 
<xs:sequence> 
<xs:element minOccurs="0" maxOccurs="unbounded" name="Row" type="RowType"/> 
</xs:sequence> 
</xs:complexType> 
<xs:complexType name="RowType"> 
<xs:sequence> 
<xs:element name="id" type="xs:integer"/> 
<xs:element name="name" type="xs:string"/> 
<xs:element name="surname" type="xs:string"/> 
<xs:element name="department" type="xs:string"/> 
<xs:element name="year" type="xs:integer"/> 
</xs:sequence> 
</xs:complexType> 
</xs:schema> 

然後,

通過使用此XML,我會插入數據庫,

<?xml version="1.0" encoding="UTF-8"?> 
<Table name="Students" Primarykey= "id"> 
<Rows> 
<Row> 
<id>100000</id> 
<name>Ali</name> 
<surname>Yilmaz</surname> 
<department>CENG</department> 
<year>1</year> 
</Row> 
<Row> 
<id>100001</id> 
<name>Deniz</name> 
<surname>Bayraktar</surname> 
<department>EE</department> 
<year>3</year> 
</Row> 
</Rows> 
</Table> 

等待你的幫助。

謝謝。

+0

XSOM是您應該使用的,但您需要發佈更多信息來解決您遇到的錯誤。我也不清楚你打算做什麼。 XSD不能與SQL模式自動兼容,所以這不是一個簡單的問題。 – jiggy 2011-03-20 23:41:52

+0

import com.sun.xml.xsom.parser.XSOMParser; import com.sun.xml.xsom.XSSchemaSet; XSOMParser parser = new XSOMParser(); parser.setErrorHandler(...); parser.setEntityResolver(...); parser.parseSchema(new File(「myschema.xsd」)); parser.parseSchema(new File(「XHTML.xsd」)); XSSchemaSet sset = parser.getResult(); 我將使用此代碼,但XSOMParser()部分不起作用。我在這裏得到了NoClassDefError錯誤。 – aod 2011-03-20 23:57:10

+0

我認爲這只是意味着它不在你的類路徑中。你有所有必需的罐子嗎?你使用Maven來解決依賴關係嗎? – jiggy 2011-03-21 15:00:48

回答

2

XSD是XML,所以任何XML解析器都可以。使用JDK中內置的那個,或者您會發現JDOM或DOM4J更易於使用。

一旦你解析了XSD,就必須爲MySQL生成SQL DDL(例如CREATE TABLE)語句。這對你來說是一個兩步過程。

XSD和XML是分層的; SQL數據庫是關係型的。您可能需要在MySQL架構上做更多的工作才能使其可用(例如,主鍵,索引等)。

+0

感謝您的回答。所以我可以使用我用於我的xml的解析器。謝啦。 – aod 2011-03-20 23:46:24

0

對於解析XSD文件,我建議使用JDOM,這非常簡單直觀。這是一個很好的read就可以了。使用SQL語句插入數據到SQL應該是微不足道的。