SpringBoot框架如何管理Xml和CSV
程序员文章站
2022-03-07 12:46:18
目录一、文档类型简介1、xml文档xml是可扩展标记语言,是一种用于标记电子文件使其具有结构性的标记语言。标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如数据结构,格...
一、文档类型简介
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 ; } /** * 创建xml文档 */ 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·地址
gitee·地址
以上就是springboot框架如何管理xml和csv的详细内容,更多关于springboot管理xml和csv的资料请关注其它相关文章!
上一篇: java实现哈夫曼文件解压缩