后台代码:

  1. import java.io.BufferedReader;
  2. import java.io.ByteArrayInputStream;
  3. import java.io.InputStream;
  4. import java.io.InputStreamReader;
  5.  
  6. import javax.servlet.http.HttpServletRequest;
  7. import javax.xml.parsers.DocumentBuilder;
  8. import javax.xml.parsers.DocumentBuilderFactory;
  9.  
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.bind.annotation.RequestMethod;
  12. import org.springframework.web.multipart.MultipartFile;
  13. import org.springframework.web.multipart.MultipartHttpServletRequest;
  14. import org.w3c.dom.Document;
  15. import org.w3c.dom.Element;
  16. import org.w3c.dom.Node;
  17. import org.w3c.dom.NodeList;
  18.  
  19. /**
  20. * 解析XML文件
  21. * @author 【】
  22. *
  23. */
  24. public class ReaderXML {
  25.  
  26. @RequestMapping(value = "", method = RequestMethod.POST, produces = "text/plain;charset=utf-8")
  27. public void parseXML(HttpServletRequest request) {
  28. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  29. MultipartFile mFile = multipartRequest.getFile("xml");
  30. // 获取传入的xml路径
  31. String url = mFile.getOriginalFilename();
  32. // 获取传入的文件名称
  33. String hzmc = mFile.getOriginalFilename().substring(mFile.getOriginalFilename().lastIndexOf("\\") + 1);
  34. // 解析XML文件,返回节点信息集合
  35. NodeList childNodes = getNodeLists(mFile);
  36. for (int i = 0; i < childNodes.getLength(); i++) {
  37. // 获取单个节点信息
  38. Node node = childNodes.item(i);
  39. if ("节点名".equals(node.getNodeName())) {
  40. String 节点值 = node.getTextContent();
  41. // 获取该节点下子节点
  42. NodeList childNodes1 = node.getChildNodes();
  43. }
  44. }
  45. }
  46. /*
  47. * 解析XML文件,返回节点信息
  48. */
  49. private NodeList getNodeLists(MultipartFile mFile) {
  50. // 读取XML文件内容
  51. BufferedReader br = new BufferedReader(new InputStreamReader(mFile.getInputStream(), "utf-8"));
  52. StringBuffer buffer = new StringBuffer();
  53. String line = " ";
  54. while ((line = br.readLine()) != null) {
  55. buffer.append(line);
  56. }
  57. InputStream stream = new ByteArrayInputStream(buffer.toString().getBytes());
  58. // 返回documentBuilderFactory对象
  59. DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  60. // 返回db对象用documentBuilderFatory对象获得返回documentBuildr对象
  61. DocumentBuilder db = dbf.newDocumentBuilder();
  62. Document document = db.parse(stream);
  63. Element element = document.getDocumentElement();
  64. NodeList childNodes = element.getChildNodes();
  65.  
  66. return childNodes;
  67. }
  68. }

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. python tips: is同一性运算符

    is用来判断两个对象是不是同一个对象,通过id()函数取对象地址进行判断.python会缓存一些小的整数,以及只包含字母数字以及下划线的字符串.所以在对于这些值的时候,is判断为True. >& ...

  2. [NOI2005]维护数列_Splay

    真的毫无算法可言,就是比谁的码力强罢了... Code: #include<stack> #include<cstdio> #include<algorithm> ...

  3. 路飞学城Python-Day96

    51-数据库表关系之一对多 为什么有多表的概念? 一个Book有单表的时候只能查询Book表中的内容,要想查询更多的出版社的信息,需要再将单表的内容不断更新 导致单表会存储大量的重复的信息,浪费了大量 ...

  4. windows 端口号占用和解决方法

    https://blog.csdn.net/qq_39657909/article/details/80378983

  5. Codeforces Round #468 (Div. 2, based on Technocup 2018 Final Round)C. Laboratory Work

    Anya and Kirill are doing a physics laboratory work. In one of the tasks they have to measure some v ...

  6. [luogu3261 JLOI2015] 城池攻占 (左偏树+标记)

    传送门 Description 小铭铭最近获得了一副新的桌游,游戏中需要用 m 个骑士攻占 n 个城池.这 n 个城池用 1 到 n 的整数表示.除 1 号城池外,城池 i 会受到另一座城池 fi 的 ...

  7. 使用Requests+正则表达式爬取猫眼TOP100电影并保存到文件或MongoDB,并下载图片

    需要着重学习的地方:(1)爬取分页数据时,url链接的构建(2)保存json格式数据到文件,中文显示问题(3)线程池的使用(4)正则表达式的写法(5)根据图片url链接下载图片并保存(6)MongoD ...

  8. Python面向对象----多态和鸭子类型

    1. C#中多态实现的条件是 继承, 重写以及父类指向子类. 但是在弱类型Python里面, 实现多态的条件就显得很简洁, 只需要在子类中实现父类相同名称的方法即可. 2. 鸭子类型的解释: 若一个类 ...

  9. 安装oracle服务端之后再安装oracle客户端导致sqlplus命令无法使用??

    首先小编自述一下所遇到的问题: 昨天在已经安装 oracle 服务端的 win7 X64 主机上安装 oracle client 之后,发现我的sqlplus命令无法用了??经过百度,都说我服务没有开 ...

  10. jedis 连接 redis

    一.连接单机版的 redis /** * 直接连接 redis * @throws Exception */ @Test public void test1() throws Exception { ...