文件系统(02):基于SpringBoot管理Xml和CSV

一、文档类型简介1、XML文档【文件系统(02):基于SpringBoot管理Xml和CSV】XML是可扩展标记语言 , 是一种用于标记电子文件使其具有结构性的标记语言 。 标记指计算机所能理解的信息符号 , 通过此种标记 , 计算机之间可以处理包含各种的信息比如数据结构 , 格式等 。 它可以用来标记数据、定义数据类型 , 是一种允许用户对自己的标记语言进行定义的源语言 。 适合网络传输 , 提供统一的方法来描述和交换应用程序的结构化数据 。
2、CSV文档CSV文档 , 以逗号分隔文档内容值 , 其文件以纯文本形式存储结构数据 。 CSV文件由任意数目的记录组成 , 记录间以某种换行符分隔;每条记录由字段组成 , 字段间的分隔符是其它字符或字符串 , 最常见的是逗号 。 CSV是一种通用的、相对简单的文件格式 , 通常被用在大数据领域 , 进行大规模的数据搬运操作 。
二、XML文件管理1、Dom4j依赖Dom4j是基于Java编写的XML文件操作的API包 , 用来读写XML文件 。 具有性能优异、功能强大和简单易使用的特点 。
dom4jdom4j1.6.1jaxenjaxen1.1.62、基于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) ;}}