我已经搜索了 3 天,但找不到解决方案。我想解析 XSD 文件以在 java 中创建 mySql 表。顺便说一句,我不想使用 xsd 验证 xml 文件。
首先,我使用了 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>
等待您的帮助。
谢谢。
最佳答案
XSD 是 XML,因此任何 XML 解析器都可以。使用 JDK 中内置的那个,或者您可能会发现 JDOM 或 DOM4J 更容易使用。
解析 XSD 后,您必须为 MySQL 生成 SQL DDL(例如 CREATE TABLE)语句。这对您来说是一个两步过程。
XSD 和 XML 是分层的; SQL 数据库是关系型数据库。您可能需要对 MySQL 模式做更多工作才能使其可用(例如主键、索引等)
关于java - Java 中的 XSD 到 DBMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5372346/