广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot框架如何管理Xml和CSV
  • 478
分享到

SpringBoot框架如何管理Xml和CSV

2024-04-02 19:04:59 478人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、文档类型简介1、XML文档2、CSV文档二、XML文件管理1、Dom4j依赖2、基于api封装方法3、执行效果图三、CSV文件管理1、CSV文件样式2、文件读取3、文件创建4

一、文档类型简介

1、XML文档

XML是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如数据结构,格式等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。适合网络传输,提供统一的方法来描述和交换应用程序的结构化数据。

2、CSV文档

CSV文档,以逗号分隔文档内容值,其文件以纯文本形式存储结构数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号。CSV是一种通用的、相对简单的文件格式,通常被用在大数据领域,进行大规模的数据搬运操作。

二、XML文件管理

1、Dom4j依赖

Dom4j是基于Java编写的XML文件操作的API包,用来读写XML文件。具有性能优异、功能强大和简单易使用的特点。


<dependency>
    <groupId>dom4j</groupId>
    <artifactId>dom4j</artifactId>
    <version>1.6.1</version>
</dependency>
<dependency>
    <groupId>jaxen</groupId>
    <artifactId>jaxen</artifactId>
    <version>1.1.6</version>
</dependency>

2、基于API封装方法

涉及对XML文件读取、加载、遍历、创建、修改、删除等常用方法。


public class XmlUtil {
    
    public static Document getDocument (String filename) {
        File xmlFile = new File(filename) ;
        Document document = null;
        if (xmlFile.exists()){
            try{
                SAXReader saxReader = new SAXReader();
                document = saxReader.read(xmlFile);
            } catch (Exception e){
                e.printStackTrace();
            }
        }
        return document ;
    }

    
    public static Document iteratornode (String filename) {
        Document document = getDocument(filename) ;
        if (document != null) {
            Element root = document.getRootElement();
            Iterator iterator = root.elementIterator() ;
            while (iterator.hasNext()) {
                Element element = (Element) iterator.next();
                System.out.println(element.getName());
            }
        }
        return document ;
    }

    
    public static void createXML (String filePath) throws Exception {
        // 创建 Document 对象
        Document document = DocumentHelper.createDocument();
        // 创建节点,首个节点默认为根节点
        Element rootElement = document.addElement("project");
        Element parentElement = rootElement.addElement("parent");
        parentElement.addComment("版本描述") ;
        Element groupIdElement = parentElement.addElement("groupId") ;
        Element artifactIdElement = parentElement.addElement("artifactId") ;
        Element versionElement = parentElement.addElement("version") ;
        groupIdElement.setText("SpringBoot2");
        artifactIdElement.setText("spring-boot-starters");
        versionElement.setText("2.1.3.RELEASE");
        //设置输出编码
        OutputFORMat format = OutputFormat.createPrettyPrint();
        File xmlFile = new File(filePath);
        format.setEncoding("UTF-8");
        XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFile),format);
        writer.write(document);
        writer.close();
    }

    
    public static void updateXML (String filePath) throws Exception {
        Document document = getDocument (filePath) ;
        if (document != null){
            // 修改指定节点
            List elementList = document.selectNodes("/project/parent/groupId");
            Iterator iterator = elementList.iterator() ;
            while (iterator.hasNext()){
                Element element = (Element) iterator.next() ;
                element.setText("spring-boot-2");
            }
            //设置输出编码
            OutputFormat format = OutputFormat.createPrettyPrint();
            File xmlFile = new File(filePath);
            format.setEncoding("UTF-8");
            XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFile),format);
            writer.write(document);
            writer.close();
        }
    }

    
    public static void removeElement (String filePath) throws Exception {
        Document document = getDocument (filePath) ;
        if (document != null){
            // 修改指定节点
            List elementList = document.selectNodes("/project/parent");
            Iterator iterator = elementList.iterator() ;
            while (iterator.hasNext()){
                Element parentElement = (Element) iterator.next() ;
                Iterator parentIterator = parentElement.elementIterator() ;
                while (parentIterator.hasNext()){
                    Element childElement = (Element)parentIterator.next() ;
                    if (childElement.getName().equals("version")) {
                        parentElement.remove(childElement) ;
                    }
                }
            }
            //设置输出编码
            OutputFormat format = OutputFormat.createPrettyPrint();
            File xmlFile = new File(filePath);
            format.setEncoding("UTF-8");
            XMLWriter writer = new XMLWriter(new FileOutputStream(xmlFile),format);
            writer.write(document);
            writer.close();
        }
    }
    public static void main(String[] args) throws Exception {
        String filePath = "F:\\file-type\\project-cf.xml" ;
        // 1、创建文档
        Document document = getDocument(filePath) ;
        System.out.println(document.getRootElement().getName());
        // 2、根节点遍历
        iteratorNode(filePath);
        // 3、创建XML文件
        String newFile = "F:\\file-type\\project-cf-new.xml" ;
        createXML(newFile) ;
        // 4、更新XML文件
        updateXML(newFile) ;
        // 5、删除节点
        removeElement(newFile) ;
    }
}

3、执行效果图

三、CSV文件管理

1、CSV文件样式

这里不需要依赖特定的jar包,按照普通的文件读取即可。

2、文件读取


@Async
@Override
public void readNotify(String path, Integer columnSize) throws Exception {
    File file = new File(path) ;
    String fileName = file.getName() ;
    int lineNum = 0 ;
    if (fileName.startsWith("data-")) {
        InputStreamReader isr = new InputStreamReader(new FileInputStream(file),"GBK") ;
        BufferedReader reader = new BufferedReader(isr);
        List<DataInfo> dataInfoList = new ArrayList<>(4);
        String line  ;
        while ((line = reader.readLine()) != null) {
            lineNum ++ ;
            String[] dataArray = line.split(",");
            if (dataArray.length == columnSize) {
                String cityName = new String(dataArray[1].getBytes(),"UTF-8") ;
                dataInfoList.add(new DataInfo(Integer.parseInt(dataArray[0]),cityName,dataArray[2])) ;
            }
            if (dataInfoList.size() >= 4){
                LOGGER.info("容器数据:"+dataInfoList);
                dataInfoList.clear();
            }
        }
        if (dataInfoList.size()>0){
            LOGGER.info("最后数据:"+dataInfoList);
        }
        reader.close();
    }
    LOGGER.info("读取数据条数:"+lineNum);
}

3、文件创建


@Async
@Override
public void createCsv(List<String> dataList,String path) throws Exception {
    File file = new File(path) ;
    boolean createFile = false ;
    if (file.exists()){
        boolean deleteFile = file.delete() ;
        LOGGER.info("deleteFile:"+deleteFile);
    }
    createFile = file.createNewFile() ;
    OutputStreamWriter ost = new OutputStreamWriter(new FileOutputStream(path),"UTF-8") ;
    BufferedWriter out = new BufferedWriter(ost);
    if (createFile){
        for (String line:dataList){
            if (!StringUtils.isEmpty(line)){
                out.write(line);
                out.newLine();
            }
        }
    }
    out.close();
}

4、编写测试接口

这里基于swagger2管理接口测试 。


@Api("Csv接口管理")
@RestController
public class CsvWEB {
    @Resource
    private CsvService csvService ;
    @ApiOperation(value="文件读取")
    @GetMapping("/csv/readNotify")
    public String readNotify (@RequestParam("path") String path,
                              @RequestParam("column") Integer columnSize) throws Exception {
        csvService.readNotify(path,columnSize);
        return "success" ;
    }
    @ApiOperation(value="创建文件")
    @GetMapping("/csv/createCsv")
    public String createCsv (@RequestParam("path") String path) throws Exception {
        List<String> dataList = new ArrayList<>() ;
        dataList.add("1,北京,beijing") ;
        dataList.add("2,上海,shanghai") ;
        dataList.add("3,苏州,suzhou") ;
        csvService.createCsv(dataList,path);
        return "success" ;
    }
}

四、源代码地址

文中涉及文件类型,在该章节源码ware18-file-parent/case-file-type目录下。

GitHub·地址
https://github.com/cicadasmile/middle-ware-parent
GitEE·地址
Https://gitee.com/cicadasmile/middle-ware-parent

以上就是SpringBoot框架如何管理Xml和CSV的详细内容,更多关于SpringBoot管理Xml和CSV的资料请关注编程网其它相关文章!

--结束END--

本文标题: SpringBoot框架如何管理Xml和CSV

本文链接: https://www.lsjlt.com/news/128346.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot框架如何管理Xml和CSV
    目录一、文档类型简介1、XML文档2、CSV文档二、XML文件管理1、Dom4j依赖2、基于API封装方法3、执行效果图三、CSV文件管理1、CSV文件样式2、文件读取3、文件创建4...
    99+
    2022-11-12
  • SpringBoot框架如何管理Xml和CSV文件类型
    这篇文章主要介绍了SpringBoot框架如何管理Xml和CSV文件类型,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、文档类型简介1、XML文档XML是可扩展标记语言,是...
    99+
    2023-06-02
  • 基于SpringBoot框架如何管理Excel和PDF文件类型
    这篇文章主要介绍基于SpringBoot框架如何管理Excel和PDF文件类型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、文档类型简介1、Excel文档Excel一款电子表格软件。直观的界面、出色的计算功能和图...
    99+
    2023-06-02
  • SpringBoot框架如何操作Excel和PDF
    目录一、文档类型简介1、Excel文档2、PDF文档二、Excel文件管理1、POI依赖2、文件读取3、文件创建4、文件导出5、文件导出接口三、PDF文件管理1、IText依赖2、A...
    99+
    2022-11-12
  • 如何在Spring框架中管理NPM包?
    Spring框架是Java开发中最流行的框架之一,它提供了很多有用的功能,例如依赖注入和AOP。但是,它并不能直接管理NPM包。本文将介绍如何在Spring框架中管理NPM包,以及如何使用它们来构建更好的Web应用程序。 一、什么是NPM包...
    99+
    2023-07-30
    spring numpy npm
  • 如何使用Git管理Java响应框架?
    Git是一款非常流行的版本控制工具,它可以帮助开发人员更好地管理代码。在Java开发中,响应框架是非常重要的一部分。因此,本文将介绍如何使用Git来管理Java响应框架。 一、Git的基本概念 在使用Git之前,需要了解一些基本概念。 1...
    99+
    2023-06-17
    git 框架 响应
  • 如何在Java中处理Shell框架的重定向和管道?
    在Java中处理Shell框架的重定向和管道是非常常见的任务。在本文中,我们将介绍一些基本的概念和技术,以帮助您更好地理解和处理Shell框架中的重定向和管道。 一、什么是Shell框架 Shell框架是一个交互式的命令行环境,可以让用户输...
    99+
    2023-06-14
    重定向 shell 框架
  • 如何使用Python path框架来管理存储和文件路径?
    Python是一种高级编程语言,它提供了许多强大的框架和库,其中包括用于管理文件路径的path框架。在本文中,我们将深入了解如何使用Python path框架来管理存储和文件路径,以便您可以更好地组织和管理您的代码和项目。 一、Python...
    99+
    2023-09-09
    path 框架 存储
  • 如何使用索引来管理Java和Unix框架的复杂性?
    使用索引来管理Java和Unix框架的复杂性 在软件开发中,随着项目的不断发展和需求的不断增加,代码的复杂性也会不断增加。为了更好地管理这些复杂性,我们可以使用索引来帮助我们快速定位和处理问题。本文将介绍如何使用索引来管理Java和Unix...
    99+
    2023-06-16
    unix 框架 索引
  • fastadmin框架,如何获取管理员的角色组
    在FastAdmin框架中,可以使用getGroups()方法来获取当前管理员所属的角色组。以下是获取当前管理员角色组的示例代码: php // 获取当前管理员的ID$adminId = Admin:...
    99+
    2023-09-27
    php
  • 如何使用 Git 优化 PHP 框架的版本管理和协作开发?
    Git 是目前最流行的版本控制系统之一,它可以帮助 PHP 开发者更好地管理代码版本和协作开发。本文将介绍如何使用 Git 优化 PHP 框架的版本管理和协作开发。 一、Git 的基本概念 Git 是一种分布式版本控制系统,它可以让多个开发...
    99+
    2023-09-25
    框架 apache git
  • SpringBoot2如何整合Shiro框架实现用户权限管理
    小编给大家分享一下SpringBoot2如何整合Shiro框架实现用户权限管理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、Shiro简介1、基础概念Apac...
    99+
    2023-06-02
  • 从 Shell 到 ASP 框架:如何有效管理并发请求?
    在当今互联网时代,高并发请求已经成为了一个常见的问题。无论是在 Shell 脚本还是 ASP 框架中,如何有效地管理并发请求是一项非常重要的技能。在本文中,我们将探讨如何在 Shell 脚本和 ASP 框架中有效地管理并发请求。 一、Sh...
    99+
    2023-08-08
    框架 并发 shell
  • Python和Laravel框架:如何处理存储瓶颈?
    在当今的互联网时代,数据的存储和处理已成为一个不可避免的问题。无论是大型企业还是小型公司,都需要存储和处理海量的数据。在这个过程中,存储瓶颈可能会成为一个重要问题。Python和Laravel框架是两个广泛使用的工具,本文将介绍如何使用它...
    99+
    2023-10-19
    laravel 框架 存储
  • Spring框架的容器管理能力如何帮助大数据处理?
    在现代数据处理领域,大数据已经成为了一种趋势。随着数据量的不断增加,如何高效地处理大数据成为了一个重要的问题。Spring框架的容器管理能力可以帮助我们更好地处理大数据。 Spring框架是一个非常流行的Java开发框架,它提供了许多工具...
    99+
    2023-07-09
    容器 spring 大数据
  • 你知道如何使用 Spring 框架来管理 ASP 对象吗?
    Spring 框架是一种流行的 Java 开发框架,它提供了一种简单的方法来管理 ASP 对象。在本文中,我们将探讨如何使用 Spring 框架来管理 ASP 对象,并提供一些演示代码。 ASP(Active Server Pages)是一...
    99+
    2023-10-23
    对象 unix spring
  • 如何在go中使用shell命令来管理文件框架?
    如何在Go中使用Shell命令来管理文件框架? 在Go中使用Shell命令可以让开发者更加方便地管理文件框架。本文将介绍如何在Go中使用Shell命令来实现文件的创建、删除、复制、移动、重命名以及查找等操作。 创建文件 在Go中,我们可...
    99+
    2023-11-10
    文件 框架 shell
  • Springboot如何实现认证和动态权限管理
    今天小编给大家分享一下Springboot如何实现认证和动态权限管理的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。知识点补充...
    99+
    2023-06-19
  • ASP 框架开发技术:如何有效地管理您的文件?
    在 ASP 框架中,文件管理是一个非常重要的部分。合理地管理文件可以大大提高我们的开发效率,让我们更加专注于业务逻辑的实现。在本文中,我们将介绍一些有效的文件管理技术,以帮助您更好地管理您的文件。 一、使用虚拟路径 虚拟路径是指一种通过 ...
    99+
    2023-09-17
    框架 开发技术 文件
  • 如何用SpringBoot框架实现切换启动开发环境和测试环境
    本篇内容介绍了“如何用SpringBoot框架实现切换启动开发环境和测试环境”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!SpringBoo...
    99+
    2023-06-21
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作