2011-03-20 59 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应该是微不足道的。