后台代码:

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.InputStreamReader; import javax.servlet.http.HttpServletRequest;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList; /**
* 解析XML文件
* @author 【】
*
*/
public class ReaderXML { @RequestMapping(value = "", method = RequestMethod.POST, produces = "text/plain;charset=utf-8")
public void parseXML(HttpServletRequest request) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
MultipartFile mFile = multipartRequest.getFile("xml");
// 获取传入的xml路径
String url = mFile.getOriginalFilename();
// 获取传入的文件名称
String hzmc = mFile.getOriginalFilename().substring(mFile.getOriginalFilename().lastIndexOf("\\") + 1);
// 解析XML文件,返回节点信息集合
NodeList childNodes = getNodeLists(mFile);
for (int i = 0; i < childNodes.getLength(); i++) {
// 获取单个节点信息
Node node = childNodes.item(i);
if ("节点名".equals(node.getNodeName())) {
String 节点值 = node.getTextContent();
// 获取该节点下子节点
NodeList childNodes1 = node.getChildNodes();
}
}
}
/*
* 解析XML文件,返回节点信息
*/
private NodeList getNodeLists(MultipartFile mFile) {
// 读取XML文件内容
BufferedReader br = new BufferedReader(new InputStreamReader(mFile.getInputStream(), "utf-8"));
StringBuffer buffer = new StringBuffer();
String line = " ";
while ((line = br.readLine()) != null) {
buffer.append(line);
}
InputStream stream = new ByteArrayInputStream(buffer.toString().getBytes());
// 返回documentBuilderFactory对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 返回db对象用documentBuilderFatory对象获得返回documentBuildr对象
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(stream);
Element element = document.getDocumentElement();
NodeList childNodes = element.getChildNodes(); return childNodes;
}
}

Java上传且后台解析XML文件的更多相关文章

  1. 【java项目实战】dom4j解析xml文件,连接Oracle数据库

    简单介绍 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方.我们还是看一下官方给出的解释.例如以下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT ...

  2. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  3. Java上传Excel并解析

    1.上传: public String uploadFile(CommonsMultipartFile file,String uploadPath,String realUploadPath){ I ...

  4. Android程序解析XML文件的方法及使用PULL解析XML案例

    一.一般解析XML文件的方法有SAX和DOM.PULL (1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信 ...

  5. java上传excel文件及解析

      java上传excel文件及解析 CreateTime--2018年3月5日16:25:14 Author:Marydon 一.准备工作 1.1 文件上传插件:swfupload: 1.2 文件上 ...

  6. Java上传下载excel、解析Excel、生成Excel

    在软件开发过程中难免需要批量上传与下载,生成报表保存也是常有之事,最近集团门户开发用到了Excel模版下载,Excel生成,圆满完成,对这一知识点进行整理,资源共享,有不足之处还望批评指正,文章结尾提 ...

  7. java+上传文件夹

    最近在学习百度的开源上传组件WebUploader,写了一些示例以记录.WebUploader的缺点是没有一个比较好的现成的界面,这个界面需要自己去实现.自由度高了一些. WebUploader是由B ...

  8. java+上传大文件

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 先说下要求: PC端全平台支持,要求支持Windows,Mac,Linux 支持所 ...

  9. java上传超大文件解决方案

    用JAVA实现大文件上传及显示进度信息 ---解析HTTP MultiPart协议 (本文提供全部源码下载,请访问 https://github.com/1269085759/up6-jsp-mysq ...

随机推荐

  1. 【JavaScript框架封装】实现一个类似于JQuery的选择框架的封装

    // 选择框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({}); // 不需要参与链式访问的 ...

  2. Linux设备驱动--块设备(一)之概念和框架(转)

    基本概念   块设备(blockdevice) --- 是一种具有一定结构的随机存取设备,对这种设备的读写是按块进行的,他使用缓冲区来存放暂时的数据,待条件成熟后,从缓存一次性写入设备或者从设备一次性 ...

  3. python初学者学习笔记

    python开发: a.Python基础 b.网络编程 c.web框架 —用于写网站 d.设计阶段+算法 e.项目阶段 开发: 开发语言:高级语言:python/Java/PHP/C#/Go/ruby ...

  4. hdu 2491 贪心

    #include<stdio.h> #include<stdlib.h> #define N 110000 struct node { int u,v,len,time; }m ...

  5. [GraphQL] Mutations and Input Types

    Sometimes, you want to resues object type when doing mutation, you can use 'input' type to help: inp ...

  6. 【LeetCode-面试算法经典-Java实现】【056-Merge Intervals(区间合并)】

    [056-Merge Intervals(区间合并)] [LeetCode-面试算法经典-Java实现][全部题目文件夹索引] 原题 Given a collection of intervals, ...

  7. 项目部署在windows下的tomcat里

    打包放在webapps 目录下,web的改成ROOT ok!!!

  8. remote debug

    https://docs.microsoft.com/en-us/visualstudio/debugger/remote-debugging https://docs.microsoft.com/e ...

  9. oracle 11gR2 如何修改vip

    因为业务需要,需要将p570a主机和p570b主机上的vip做修改 修改前ip 192.168.128.12   p570a-vip 192.168.128.13   p570b-vip 修改后ip ...

  10. 【BZOJ 2463】 谁能赢呢?

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2463 [算法] n为偶数时必胜,否则必败 [代码] #include<bits ...