java代码读取xml文件生成sql建表语句
时间: 2023-07-05 16:20:37 浏览: 120
可以使用DOM解析器来读取XML文件并生成SQL建表语句。以下是一个示例代码:
```java
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
public class XmlToSql {
public static void main(String[] args) {
try {
// 读取XML文件
File inputFile = new File("input.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(inputFile);
doc.getDocumentElement().normalize();
// 获取所有"table"节点
NodeList tableList = doc.getElementsByTagName("table");
// 遍历"table"节点
for (int i = 0; i < tableList.getLength(); i++) {
Node tableNode = tableList.item(i);
if (tableNode.getNodeType() == Node.ELEMENT_NODE) {
Element tableElement = (Element) tableNode;
// 获取表名
String tableName = tableElement.getAttribute("name");
// 生成建表语句
StringBuilder sb = new StringBuilder();
sb.append("CREATE TABLE ").append(tableName).append(" (");
// 获取所有"column"节点
NodeList columnList = tableElement.getElementsByTagName("column");
// 遍历"column"节点
for (int j = 0; j < columnList.getLength(); j++) {
Node columnNode = columnList.item(j);
if (columnNode.getNodeType() == Node.ELEMENT_NODE) {
Element columnElement = (Element) columnNode;
// 获取列名和数据类型
String columnName = columnElement.getAttribute("name");
String dataType = columnElement.getAttribute("type");
// 添加列到建表语句中
sb.append(columnName).append(" ").append(dataType).append(", ");
}
}
// 去除最后一个逗号和空格
sb.setLength(sb.length() - 2);
// 添加主键
sb.append(", PRIMARY KEY (id)");
// 结束建表语句
sb.append(");");
// 输出建表语句
System.out.println(sb.toString());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
假设有一个名为"input.xml"的XML文件,内容如下:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<database>
<table name="users">
<column name="id" type="INT"/>
<column name="name" type="VARCHAR(50)"/>
<column name="email" type="VARCHAR(50)"/>
</table>
<table name="posts">
<column name="id" type="INT"/>
<column name="title" type="VARCHAR(50)"/>
<column name="content" type="TEXT"/>
</table>
</database>
```
运行上面的Java代码,将会输出以下内容:
```
CREATE TABLE users (id INT, name VARCHAR(50), email VARCHAR(50), PRIMARY KEY (id));
CREATE TABLE posts (id INT, title VARCHAR(50), content TEXT, PRIMARY KEY (id));
```
这就是通过Java代码读取XML文件并生成SQL建表语句的过程。
阅读全文