一、用到的依赖maven如下

<dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.79</version>
</dependency>
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version>
</dependency>

二、转换工具类

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.dom4j.Attribute;
import org.dom4j.Element;
import java.util.List;
import static org.apache.commons.lang3.ObjectUtils.isEmpty;public class DomUtil {/*** xml转json** @param element* @param json*/public static void dom4j2Json(Element element, JSONObject json) {//如果是属性for (Object o : element.attributes()) {Attribute attr = (Attribute) o;if (!isEmpty(attr.getValue())) {json.put("@" + attr.getName(), attr.getValue());}}List<Element> chdEl = element.elements();if (chdEl.isEmpty() && !isEmpty(element.getText())) {//如果没有子元素,只有一个值json.put(element.getName(), element.getText());}for (Element e : chdEl) {//有子元素if (!e.elements().isEmpty()) {//子元素也有子元素JSONObject chdjson = new JSONObject();dom4j2Json(e, chdjson);Object o = json.get(e.getName());if (o != null) {JSONArray jsona = null;if (o instanceof JSONObject) {//如果此元素已存在,则转为jsonArrayJSONObject jsono = (JSONObject) o;json.remove(e.getName());jsona = new JSONArray();jsona.add(jsono);jsona.add(chdjson);}if (o instanceof JSONArray) {jsona = (JSONArray) o;jsona.add(chdjson);}json.put(e.getName(), jsona);} else {if (!chdjson.isEmpty()) {json.put(e.getName(), chdjson);}}} else {//子元素没有子元素for (Object o : element.attributes()) {Attribute attr = (Attribute) o;if (!isEmpty(attr.getValue())) {json.put("@" + attr.getName(), attr.getValue());}}if (!e.getText().isEmpty()) {json.put(e.getName(), e.getText());}}}}
}

三、测试

public class MainServer {public static void main(String[] args) throws IOException, DocumentException {//获取xml为Document对象SAXReader reader = new SAXReader();Document doc = reader.read(new File("D:\\test.xml"));//Document对象转为json对象JSONObject json = new JSONObject();DomUtil.dom4j2Json(doc.getRootElement(), json);System.out.println(json.toJSONString());}
}

java读取xml转json相关推荐

  1. Java之 XML与JSON(公众平台接口数据格式)

    Java之 XML与JSON(公众平台接口数据格式) 1. XML 2. XML语法 2.1XML文档声明 2.2 标记(元素/标签/节点) 2.3 一个XML文档中,必须有且且仅允许有一个根标记 2 ...

  2. java读取XML文件的四种方式

    java读取XML文件的四种方式 Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT& ...

  3. Java读取xml数据

    xml中的代码 <?xml version="1.0" encoding="UTF-8"?><books id="aaa" ...

  4. kryo java_优化Java序列化– Java,XML,JSON,Kryo,POF

    kryo java 也许我很天真,但是我一直认为Java序列化肯定是将Java对象序列化为二进制形式的最快,最有效的方法. 毕竟Java是第7个主要发行版,所以这不是新技术,而且由于每个JDK似乎都比 ...

  5. 优化Java序列化– Java,XML,JSON,Kryo,POF

    也许我很天真,但是我一直认为Java序列化肯定是将Java对象序列化为二进制形式的最快,最有效的方法. 毕竟Java是第7个主要发行版,所以这不是新技术,并且由于每个JDK似乎都比上一个快,因此我错误 ...

  6. java获取返回xml节点里的值,关于用java读取xml中节点的值解决方案

    关于用java读取xml中节点的值 在写个工程,用到了如下配置的XML文档,时间紧没法网上资料太多一时看了头大,实在不知道怎么解析了,各位大神麻烦指教一下. 配置文档内容如下 hibernate-co ...

  7. java给xml加入值,怎么用java读取XML文件里的值并加入jsp页面中的下拉列表中

    如何用java读取XML文件里的值并加入jsp页面中的下拉列表中? 如何用java读取XML文件里的值并加入jsp页面中的下拉列表中? java xml jsp 分享到: ------解决方案---- ...

  8. java读取xml文件报“org.xml.sax.SAXParseException: Premature end of file”

    背景:java读取xml文件,xml文件内容只有"<?xml version="1.0" encoding="UTF-8"?>" ...

  9. java 读取 xml 配置文件内容

    java  读取 xml 配置文件内容 public static void main(String[] args) throws Exception {//创建读取的核心类SAXReader sax ...

  10. Java实现xml和json互转

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

最新文章

  1. Exchange2003表单和OWA选项中更改密码设置
  2. 编程之美-最大公约数问题方法整理
  3. C++开发者都应该使用的10个C++11特性
  4. linux function
  5. 云有约 | 在去O的道路上,AWS表示:经验可复制,惊喜并非只属于我们!
  6. html 定位z_index,绝对定位、固定定位和z-index
  7. C#WebClient常见用法
  8. 14. 使用reserve避免不必要的内存分配
  9. rpm升级linux内核,用rpm方式升级RHEL6.1内核
  10. php js 终止,使用Server-Sent Events(和Javascript / PHP)的连接会立即停止
  11. Java画十字_用Java绘制对角线
  12. undefined symbol 问题解决记录
  13. 关于JavaScript继承与原型链的一些理解
  14. 2021-09-20德天老师更新好学易懂的python办公自动化批量生成docx
  15. 办公邮箱安全性哪家好,163vip.com邮箱全新域名全新体验!
  16. 英文文献检索网站(转)
  17. 苹果cms重复采集重名视频解决方法
  18. Maven Nexus详解
  19. Oracle 错误总结及问题解决 OR
  20. 对全职高手的自然语言处理

热门文章

  1. 粒子群算法及C++实现
  2. Apple Developer苹果签名工具
  3. java swfupload 302_SWFUpload 302
  4. 自己动手写打印机监控程序
  5. serialVersionUID 的含义
  6. java ssh详解_JAVA SSH 框架介绍
  7. PowerDesigner16.5下载
  8. MyEclipse10破解
  9. ApacheCN 活动汇总 2019.7.5
  10. cashfiesta广告与传销?