把xml文件转为json

采用的dom4j读取xml文档,需导入以下jar包

<dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.35</version>
</dependency>

方法一使用了json-lib的工具包,需要在maven中导入以下jar包
方法二使用了递归的方式

<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier>
</dependency>
<dependency><groupId>xom</groupId><artifactId>xom</artifactId><version>1.2.5</version>
</dependency>

完整代码:

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import net.sf.json.xml.XMLSerializer;
import org.apache.commons.lang.StringUtils;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.io.File;
import java.util.List;/*** Created by 东方电视台 on 2017/7/26.*/
public class xmlTojson {public static void main(String[] args) throws Exception{JSONObject result = getXml2("test.xml");System.out.println(result.toString());}//方法一 利用json-lib工具包解析 public static JSONObject getXml(String filename){XMLSerializer xmlSerializer = new XMLSerializer();String jsonStr = xmlSerializer.readFromFile(new File(filename)).toString();JSONObject jsonObj = JSONObject.parseObject(jsonStr);return jsonObj;}//方法二 递归解析public static JSONObject getXml2(String filename) throws Exception{JSONObject jsonObj = new JSONObject();Document doc = readXml(filename);getJson(doc.getRootElement(), jsonObj);return jsonObj;}public static Document readXml(String filename) throws DocumentException {Document document = null;try{//获取xml文件File file = new File(filename);//创建SAXReader对象SAXReader reader = new SAXReader();//读取文件document = reader.read(file);}catch (DocumentException e){e.printStackTrace();}return  document;}public static boolean isEmpty(String s){if(StringUtils.isBlank(s) || "null".equals(s) || s.length() == 0){return true;}return false;}public static void getJson(Element element,JSONObject json){//如果是属性for(Object attrObj : element.attributes()){Attribute attr = (Attribute)attrObj;if(!isEmpty(attr.getValue())){json.put("@"+attr.getName(), attr.getValue());}}List<Element> childList = element.elements();//如果没有子元素,只有一个值if(childList.isEmpty() && !isEmpty(element.getText())){json.put(element.getName(), element.getText());}for(Element e : childList){//有子元素if(!e.elements().isEmpty()){//子元素也有子元素JSONObject childJson = new JSONObject();getJson(e,childJson);Object o = json.get(e.getName());if(o != null){JSONArray jsona = null;//如果此元素已存在,则转为jsonArrayif(o instanceof JSONObject){JSONObject jsono = (JSONObject)o;json.remove(e.getName());jsona = new JSONArray();jsona.add(jsono);jsona.add(childJson);}if(o instanceof JSONArray){jsona = (JSONArray)o;jsona.add(childJson);}json.put(e.getName(), jsona);}else{if(!childJson.isEmpty()){json.put(e.getName(), childJson);}}}else{//子元素没有子元素for(Object o:element.attributes()){Attribute attr = (Attribute)o;if(!isEmpty(attr.getValue())){json.put("@"+attr.getName(), attr.getValue());}}
//                if(!isEmpty(e.getText())){json.put(e.getName(), e.getText());
//                }}}}
}

参照博客
1: http://blog.csdn.net/tkggetg/article/details/47784321

xml TO json相关推荐

  1. XML和JSON数据格式对比

    概念 XML 扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语 ...

  2. WebApi接口 - 响应输出xml和json

    格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...

  3. XML和JSON 数据交换格式

    为什么80%的码农都做不了架构师?>>>    一.什么是数据交换格式? 客户端与服务器常用数据交换格式xml.json.html 二.数据交换格式应用场景 移动端(安卓.IOS)通 ...

  4. Java实现xml和json互转

    pom.xml: <!-- 使用staxon实现xml和json直接互转 --><dependency><groupId>de.odysseus.staxon< ...

  5. XML,Object,Json分析转换Xstream采用

    XML,Object,Json转换之浅析Xstream的使用 请尊重他人的劳动成果,转载请注明出处:XML,Object,Json转换之浅析Xstream的使用 XStream的是一个简单的库.主要用 ...

  6. XML转JSON的javascript代码

    为什么80%的码农都做不了架构师?>>>    下面是神奇的XML转JSON的javascript代码: // Changes XML to JSON function xmlToJ ...

  7. 【科普】:10分钟看明白XML和JSON

    引言 NOKIA 有句著名的广告语:"科技以人为本".任何技术都是为了满足人的生产生活需要而产生的.具体到小小的一个手机,里面蕴含的技术也是浩如烟海,是几千年来人类科技的结晶,单个 ...

  8. xml 和 json 序列化忽略字段

    xml 和 json 序列化忽略字段: @JsonIgnore@XmlTransient 转载于:https://www.cnblogs.com/xiluhua/p/9192577.html

  9. xml转json和实体类的两种方式

    本文为博主原创,未经允许不得转载: xml在http通信中具有较高的安全性和传输速度,所以应用比较广泛, 在项目中往往需要对xml,json和实体类进行相互转换,在这里总结一下自己所用到的一些方法: ...

  10. 实测:xml与json速度约差4倍

    xml与json在javascript中解析并使用,速度大约相差4倍.(在IE中测试的结果). 其中主要不在于eval,与xml parse的时间差别,主要在于属性访问上的差别: xml中使用这样的方 ...

最新文章

  1. 太棒啦!PyCharm与Jupyter完美融合,Jupytext来啦!
  2. project euler之甚至斐波那契数字(Even Fibonacci numbers)
  3. python变量词是什么意思_python1变量,表达式和语句
  4. 集合添加数据类型出现:unhashable type: ‘list‘
  5. C#利用反射将Datatable转化为指定实体类ListT
  6. p2000专业软件测试对比,对比说说丽台p2000和p2200对比哪个好些?有何区别呢?良心点评实际情况...
  7. basic code
  8. php接收post数据 json数据,PHP接收post数据并解析json的简单实例
  9. sourceinsight界面中的英文解释
  10. 互联网日报 | 3月27日 星期六 | 知乎正式登陆纽交所;美团2020年营收首破千亿元;小米将推出新款自研芯片...
  11. 小学教训计算机培训的简单内容,小学计算机教育随笔
  12. imap java代码,JAVA运用IMAP、POP3、SMTP协议收发邮件
  13. 解决无法删除文件夹的情况:文件夹正在使用,操作无法完成,因为其中的文件,或文件夹已在另一个程序中打开...
  14. 多多客支持微信公众号,正式开放公测!
  15. 专家通过六点考证唐村《李氏族谱》:辨别家谱真伪,有这些窍门
  16. Google大神每天写多少行代码?真相让你吃惊!
  17. EOS的侧链技术亮点是什么?
  18. CSS、HTML补充
  19. html中图片自动循环滚动代码,JavaScript代码实现图片循环滚动效果
  20. 解答:显示器能显示画面,但是一闪一闪是什么原因

热门文章

  1. 使用Spring-MongoDB访问全球分布数据库Cosmos DB(2)
  2. 作用域-基础知识总结------彭记(07)
  3. [LeetCode] First Missing Positive
  4. Linux系统管理(8)——Ubuntu安装ssh服务 以及版本查看命令
  5. oracle修改用户的登录密码
  6. python语法(二)——截取字符串的方法详解
  7. 日本台式计算机配置,电脑配置
  8. 帆软报表插件开发之fine-decision中的ControllerRegisterProvider扩展
  9. 计算机中加密文件找不见,文件夹保护3000找不到文件夹加密记录怎么办?
  10. java8 追加文字到文件_使用Stream-Java 8替换文件中的文本