xml TO json(非递归实现)
来源:互联网 发布:文虎考堂 数据库 编辑:程序博客网 时间:2024/05/17 03:26
之前的xml文件转化为json是利用json-lib或者递归方式实现的,在效率方面难免有些不足.经过改进,利用栈实现了非递归的方式,首先需要导入dom4j的jar包。
import com.alibaba.fastjson.JSONObject;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;import java.util.Stack;/** * Created by 东方电视台 on 2017/7/28. */public class xmlTojson { public static void main(String[] args) throws Exception{ JSONObject result = getJson("test.xml"); System.out.println(result.toString()); } 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 JSONObject getJson(String filename) throws Exception { JSONObject jsonObj = new JSONObject(); try { Document doc = readXml(filename); Element root = doc.getRootElement(); Stack<Element> stackElement = new Stack<Element>(); Stack<JSONObject> stackJson = new Stack<JSONObject>(); stackElement.push(root); stackJson.push(jsonObj); while (!stackElement.isEmpty()) { Element element = stackElement.pop(); JSONObject json = stackJson.pop(); List<Element> childList = element.elements(); //判断该节点的子节点下是否为叶子节点 for (Element e : childList) { //如果子节点为叶子节点 if (e.elements().isEmpty()) { json.put(e.getName(), e.getText()); } else { JSONObject jsonNew = new JSONObject(); json.put(e.getName(), jsonNew); stackElement.push(e); stackJson.push(jsonNew); } } } } catch (Exception e) { e.printStackTrace(); } return jsonObj; }}
阅读全文
0 0
- xml TO json(非递归实现)
- 通过递归实现java xml转json
- 字符串逆序(递归非递归实现)
- 全排序(递归+非递归实现)
- 快速排序实现(递归+非递归)
- Java非递归实现多叉树型结构遍历成JSON字符串
- java非递归实现Xml的遍历(多叉树遍历)
- Javascript JSON转XML (change JSON to xml)
- 二叉树的遍历(递归实现+非递归实现)
- 二分查找(非递归实现和递归实现)
- 二项分布的递归和非递归实现(Java实现)
- 汉诺塔(递归实现与非递归实现)
- 二叉树中序遍历(递归、栈实现非递归、不用栈实现非递归)
- 复制二叉树(非递归实现)
- 单链表反转(非递归java实现)
- 树的遍历(非递归实现)
- 组合非递归实现
- Fibonacci 非递归实现
- PKU 1046-Square Number(数论)
- Linux的初级命令行
- Error[e46]: Undefined external "debug_str::?relay" referred
- OpenCV学习之基础知识
- string基本字符系列容器
- xml TO json(非递归实现)
- 笔记--关于offsetLeft和left的区别
- [LeetCode] 402. Remove K Digits
- c# GDI+ 绘图类Graphics擦除内容,橡皮擦功能
- English in July(2017)
- 欢迎使用CSDN-markdown编辑器
- 42.蓄水池问题
- Mina的入门
- spring 集成redis