如何高效的 将 XML 存入数据库

如何高效的 将 XML 存入数据库,第1张

将一个数组存入数据库和使用的语言有关系。

通常的做法是将数组的内容转换后传递到和语言相关的数据处理方法中进行处理。

涉及到的数据转换的方法:

1:可以转换为json格式

[{key:1},{key:2}]

2:可以转换为xml

<values>

<key>1</key><key>2</key>

</values>

数据处理方法解析转换后的字符串,执行数据库保存 *** 作。

分无所谓,如果是你要的看着给吧。不知道你了解多少,我就尽量详细点,罗嗦点。

表的设计完全是根据XML节点设计的,每一个节点信息都是表的一个字段,每一个节点的属性也要是一个表的字段。

如果是用java写首先需要导入几个包

import java.sql.* //估计一般的项目都是外包连接数据库,所以用外包数据库来讲。

import java.io.*

import javax.xml.parsers.*//这个包是用来解析XML的

import org.w3c.dom.*//工厂包

import org.apache.crimson.tree.*//这个包是建立XML的包,也可以选择不用,一般IDE不自带,需要自己导入

//类也简单写一下吧

public class XmlToSql{

public static void main(string[] args){

//根据XML节点设计出的表字段,我先假设有3个字段

String id,username,password

//建立数据库连接,简单方法连一下吧

Class.forName("com.microsoft.jabc.sqlserver.SQLServerDriver")

Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433databasename="数据库名","登陆名","密码")

//建立了连接后要用工厂去获得Document,也就是你的XML

DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance()//建立一个新工厂

DocumentBuilder builder=factory.newDocumentBuilder()//工厂建立一个builder来管理Doc

Document doc=builder.parse(new FileInputStrem(new File("*****.xml"))//把你的XML进行解析放入Document类型文档。这时候你的XML文档节点就以树的形式放入内存了(说白了就是你表的字段),下面你要什么就调用就行了。

//开始正式解析文档

NodeList nodes=doc.getElementsByTagName("a")//从英文也看的出这是把名为a的节点的信息放入NodeList容器中。NodeList就是存放节点组的容器

for(int i=0i<nodes.getLength(),i++){ //开始循环把你的节点信息插入你的SQL表中,我只需要把你要的字段提取出来就行了。我们不是前面假定了一个属性ID,两个元素节点吗?这里就来取出

Element node=(Element)nodes.item(i)//先做个元素对象,毕竟我们要的字段都是元素节点

id=node.getAttributes().getNamedItem("id").getNodeValue()//用这个方法取出XML中 属性ID的内容放入ID字段中,这个ID就是你SQL里的ID名了,最后插入就可以了。注意这里是提取属性的方法

username=node.getElementsBtagName("username").item(0).getFirstChild().getNode.Value()//提取元素节点username的值放入字段,.item(0)就是第一个这个字段,如果就有一个可以不要。

password=node.getElementsBtagName("password").item(0).getFirstChild().getNode.Value()//都是元素节点,所以同样的方法取出password的值

//好了我们要的3个表值都取到了,并放入了变量中。现在一个SQL语句插入表就行了,其实我很怕在JAVA中写SQL,不能格式化, .NET就方便的多。都写到这里了就写完吧

sql="insert into a values("+id+"','"+username+"'+'"password+"')"

con.createStatement().executeUpdate(sql)

}catch(Exception e{e.printStackTrace()}

}

}

//好了,你的XL信息循环插入表中了,其实XML结构很关键,这里是但节点循环,有时候出现多子节点,或者非正规体那就要根据XML的结构来循环输入了,不过大体方法和思路都是一样的。由于直接就在这里写的代码,没在IDE中写,所以括号匹配方面也许会出小问题,见谅


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10051524.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存