xml文件格式或者xml字符串格式导入到数据库中(项目实战)
平常我们导入文件的操作没少做,那么xml格式的该怎么做呢?网上我看到的都是测试型的教程,本篇是项目实战中使用的,更加容易加深理解和运用!
首先确保是xml文件或xml字符串格式,文件中要有 <?xml version ="1.0" encoding="gb2312" ?>之类的文件头,这样才能识别是xml文档,其次里面构造要符合规范,比如一级和二级标题头
<?xml version ="1.0" encoding="gb2312" ?>
//一级
<Train>
//二级
<Record>
<System>xxx内容</System>
</Record>
</Train>
也可以多数据添加:
<?xml version ="1.0" encoding="gb2312" ?>
//一级
<Train>
//二级
<Record1>
<System>xxx内容</System>
</Record1>
<Record2>
<System>xxx内容</System>
</Record2>
</Train>
声明一下,System这字段对应数据库里的字段,Train,Record这个无所谓,xxx内容都是String类型的。
以上是文件格式的,字符串格式就是将文件里的所有东西复制成文本,不能缺少任何一个,包括文件头。
不多哔哔,上代码!
这是正常的一个API接口,参数是文本或文件,我写的是优先文本,你们可以自己随意,两个单独或者顺序自己定义。
public int AnalysisXmlDomByString(String xmlDoc,MultipartFile file) {
BufferedReader br = null;
if (StringUtils.isEmpty(xmlDoc)&&!file.isEmpty()) {
// 获取HTTP请求的输入流,然后建立一个BufferedReader
try{
br = new BufferedReader(new InputStreamReader(file.getInputStream(), "GBK"));
String buffer = null;
// 存放请求内容
StringBuffer xml = new StringBuffer();
while ((buffer = br.readLine()) != null) {
// 再页面中显示读取到的请求参数
xml.append(buffer);
}
br.close();
// XML转化为字符串
xmlDoc = xml.toString();
}
}catch(IOException e){
e.printStackTrace();
}finally{
if(br!=null){
try{
br.close();
}
catch(IOException e1){
e1.pritStackTrace();
}
}
}
}else if(StringUtils.isEmpty(xmlDoc)&&file.isEmpty()){
throw new Exception("内容不能为空!")
}
List<Map<String, Object>> list = new ArrayList<>();
StringReader read = new StringReader(xmlDoc);
// 创建新的输入源SAX解析器将使用InputSource 对象来确定如何读取XML输入
InputSource source = new InputSource(read);
// 创建一个新的SAXBuilder
SAXBuilder sb = new SAXBuilder();
// 通过输入源构造一个Document并取根的元素
Element root = sb.build(source).getRootElement();
// 获取根元素所有子元素的集合
List<Element> children = root.getChildren();
// 获得XML中的命名空间(XML未定义可不写)
Namespace ns = root.getNamespace();
Element e = null;
// 循环依次得到子元素
for (int i = 0; i < children.size(); i++) {
e = (Element) children.get(i);
Map<String, Object> map = new HashMap<>();
String system = e.getChild("System", ns).getText();
map.put("system" , system);
list.add( map);
}
//然后遍历list里的数据添加到数据库即可
}
这里提醒一下,一定要心细,大小写不能错误,失败肯定会有的,多查找原因就行了,奥里给!!!
以上就是xml格式导入数据库,大佬看到错误请指出错误,谢谢!!!