读取xml文件转换为json文件
发布时间:2020-12-16 08:07:34 所属栏目:百科 来源:网络整理
导读:在平时经常遇到需要把xml文件转换为json格式数据的需求,这里将实现读取指定目录的xml文件并吧内容转换为json格式然后输出到指定目录。项目采用spring boot项目,下面是实现的主要步骤: 一,创建一个spring boot项目 1,创建好spring boot项目,配置pom.xml
在平时经常遇到需要把xml文件转换为json格式数据的需求,这里将实现读取指定目录的xml文件并吧内容转换为json格式然后输出到指定目录。项目采用spring boot项目,下面是实现的主要步骤: 一,创建一个spring boot项目 1,创建好spring boot项目,配置pom.xml文件,代码如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.szkingdom</groupId> <artifactId>xmltojson</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>xmltojson</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.9.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.33</version> </dependency> <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20171018</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <finalName>xmltojson</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 上面主要引入一些依赖的jar包,比较简单,就不详细说明了。 注意: 如果需要指定jdk打包的版本,修改下面的代码:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.6</java.version> </properties> 指定java.version为1.6 2,配置application.
input.dir.filename=F:mystudydd_address.xml output.dir.filename=F:mystudyjack.json encoding.format=gb2312 二,主要代码
package com.szkingdom; import org.json.XML; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.w3c.dom.Document; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.OutputKeys; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.StringWriter; import java.net.MalformedURLException; import java.net.URL; @SpringBootApplication public class XmltojsonApplication implements CommandLineRunner { //输入文件所在位置 @Value("${input.dir.filename}") private String inputFileName; //输出文件所在位置 @Value("${output.dir.filename}") private String outputFileName; //xml的编码格式 @Value("${encoding.format}") private String encodingFormat; public static void main(String[] args) { SpringApplication.run(XmltojsonApplication.class,args); } @Override public void run(String... strings) throws Exception { readXml(inputFileName); } public void readXml(String dir) throws MalformedURLException { File f = new File(dir); if (!f.exists()) { System.out.println("xml文件转换为json文件失败,读取的文件不存在......,请修读取文件配置"); return; } URL url = f.toURL(); System.out.println("读取文件的路径:url = " + url); String file = url.getFile(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(file); String xml = toStringFromDoc(doc); //System.out.println(xml); xmlToJson(xml); } catch (Exception e) { e.printStackTrace(); } } /** * 把一个xml的document转换为xml字符串 * * @param document * @return */ public String toStringFromDoc(Document document) { String result = null; if (document != null) { StringWriter strWtr = new StringWriter(); StreamResult strResult = new StreamResult(strWtr); TransformerFactory tfac = TransformerFactory.newInstance(); try { javax.xml.transform.Transformer t = tfac.newTransformer(); //t.setOutputProperty(OutputKeys.ENCODING,"UTF-16"); //t.setOutputProperty(OutputKeys.ENCODING,"gb2312"); t.setOutputProperty(OutputKeys.ENCODING,encodingFormat); t.setOutputProperty(OutputKeys.INDENT,"yes"); t.setOutputProperty(OutputKeys.METHOD,"xml"); // xml,html,// text t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount","4"); t.transform(new DOMSource(document.getDocumentElement()),strResult); } catch (Exception e) { System.err.println("XML.toString(Document): " + e); } result = strResult.getWriter().toString(); try { strWtr.close(); } catch (IOException e) { e.printStackTrace(); } } return result; } /** * xml字符串转json字符串 * * @param xml */ public void xmlToJson(String xml) { /* 第一种方法,使用JSON-JAVA提供的方法 */ //将xml转为json org.json.JSONObject xmlJSONObj = XML.toJSONObject(xml); //设置缩进 String jsonPrettyPrintString = xmlJSONObj.toString(4); //输出格式化后的json System.out.println(jsonPrettyPrintString); //JSONObject jsonObject = (JSONObject) JSONObject.parse(jsonPrettyPrintString); //System.out.println("jsonObject:"+jsonObject); //outJsonToFile(jsonObject); outJsonToFile(jsonPrettyPrintString); } /** * 输出json字符串到文件 * * @param jsonObject */ public void outJsonToFile(String jsonObject) { byte[] buff = new byte[]{}; //String jsonStr = jsonObject.toJSONString(); String jsonStr = jsonObject; FileOutputStream out = null; File file = new File(outputFileName); // 检测是否存在目录,不存在则创建目录 if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } try { buff = jsonStr.getBytes(); //out=new FileOutputStream(outputFileName); out = new FileOutputStream(file); System.out.println("输出文件目录:" + outputFileName); out.write(buff,buff.length); System.out.println("输出json数据到文件成功"); } catch (IOException e) { e.printStackTrace(); } finally { if (out != null) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } } 使用maven打包项目,使用如下的xmlToJson.bat脚本启动:
title xmlToJson工具 f: cd F:mystudy java -jar xmltojson.jar --input.dir.filename=F:mystudydd_address.xml --output.dir.filename=F:mystudydd_address.json --encoding.format=gb2312 pause ::说明: ::第一步,切换到xmltojson.jar包所在的目录 ::第二部,执行xmltojson.jar包,参数说明: :: input.dir.filename->输入的xml文件所在的目录文件 :: output.dir.filename->输出的json文件所在的目录文件 :: encoding.format->xml文件的编码和输出的json文件的编码,json文件编码采用的是xml文件的编码,默认gb2312 ::注意:需要安装好了jdk,配置好了java的环境变量 注意如果需要指定jdk启动,修改bat脚本如下:
title xmlToJson工具 f: cd F:mystudy F:mystudyjdk1.6binjava -jar xmltojson.jar --input.dir.filename=F:mystudydd_address.xml --output.dir.filename=F:mystudydd_address.json --encoding.format=gb2312 pause ::说明: ::第一步,切换到xmltojson.jar包所在的目录 ::第二部,执行xmltojson.jar包,参数说明: :: input.dir.filename->输入的xml文件所在的目录文件 :: output.dir.filename->输出的json文件所在的目录文件 :: encoding.format->xml文件的编码和输出的json文件的编码,json文件编码采用的是xml文件的编码,默认gb2312 ::注意:需要安装好了jdk,配置好了java的环境变量 主要是,F:mystudyjdk1.6binjava,指定jdk版本执行jar包 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- .net – RaisePropertyChanged如何发现属性名称?
- Caffe源码中各种依赖库的作用及简单使用
- 2.9 多维数组的创建和遍历 [Swift原创教程]
- 生成XML文件
- ios – 使用自定义视图不工作为UIBarButtonItem添加目标
- cocos2dx内存管理的一些看法
- Rails 对 Model 的数据库配置 set_table_name
- c# – Invalidcastexception JsonConvert.DeserializeObjec
- muduo : Reactor(EventLoop Poller Channel)
- c# – 如果其他单元格更改,请更新DataGrid单元格