Dom4j递归遍历XML,返回对象(json)
2014-12-06 11:32
453 查看
目录结构:
toolbox.xml
Dom4j.java
toolbox.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE toolbox> <toolbox> <tool> <key>date</key> <scope>application</scope> <class>org.apache.velocity.tools.generic.DateTool</class> </tool> <tool> <key>number</key> <scope>application</scope> <class>org.apache.velocity.tools.generic.NumberTool</class> </tool> <tool> <key>math</key> <scope>application</scope> <class>org.apache.velocity.tools.generic.MathTool</class> </tool> <tool> <key>render</key> <scope>application</scope> <class>org.apache.velocity.tools.generic.RenderTool</class> </tool> </toolbox>
Dom4j.java
package test.demo2; import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.alibaba.fastjson.JSON; public class Dom4j { public static Object parse(Element root) { List<?> elements = root.elements(); if (elements.size() == 0) { // 没有子元素 return root.getTextTrim(); } else { // 有子元素 String prev = null; boolean guess = true; // 默认按照数组处理 Iterator<?> iterator = elements.iterator(); while (iterator.hasNext()) { Element elem = (Element) iterator.next(); String name = elem.getName(); if (prev == null) { prev = name; } else { guess = name.equals(prev); break; } } iterator = elements.iterator(); if (guess) { List<Object> data = new ArrayList<Object>(); while (iterator.hasNext()) { Element elem = (Element) iterator.next(); ((List<Object>) data).add(parse(elem)); } return data; } else { Map<String, Object> data = new HashMap<String, Object>(); while (iterator.hasNext()) { Element elem = (Element) iterator.next(); ((Map<String, Object>) data).put(elem.getName(), parse(elem)); } return data; } } } public static void main(String[] args) throws Throwable { SAXReader reader = new SAXReader(); InputStream in = Dom4j.class.getResourceAsStream("toolbox.xml"); Document document = reader.read(in); Element root = document.getRootElement(); Object obj = parse(root); // 返回类型未知,已知DOM结构的时候可以强制转换 System.out.println(JSON.toJSON(obj)); // 打印JSON } }
相关文章推荐
- 关于‘Dom4j递归遍历XML所有元素 ’的一点看法
- 使用dom4j递归遍历xml
- 用DOM4J来把XML文件转成JSON对象
- 给定一个树的节点ID,递归遍历出以这个节点为根的子树,以JSON格式返回
- Dom4j递归遍历XML所有元素
- 用递归将嵌套的JSON对象遍历出来,转为二维数组 或一维数组
- js 遍历json对象并为select赋值 (ajax返回的json对象)
- 当json对象无法返回数组时,可用for in 进行遍历
- 用递归将嵌套的JSON对象遍历出来,转为二维数组
- 自动化测试,javasript遍历JSON对象及XML对象
- ASP.NET Web Api返回对象类型为JSON还是XML
- maven项目ssh框架 ajax返回json对象xml配置
- web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢
- 用递归将嵌套的JSON对象遍历出来,转为二维数组
- dom4j递归遍历XML的所有元素
- Java递归遍历json对象,支持无线层级
- Dom4j递归遍历XML所有元素
- AJAX-----07XMLHttpRequest对象的处理返回的JSON类型数据
- jquery筛选数组之grep、each、inArray、map的用法及遍历json对象
- WCF以Json格式返回对象,客户端以JS调用显示