文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java解析xml文件和json转换的方法(DOM4j解析)

2024-04-02 19:55

关注

Java解析xml的方法有四种:

  1. DOM解析
  2. SAX解析
  3. JDOM解析
  4. DOM4J解析

本次主要介绍使用DOM4j进行解析:
这里我主要使用两种方式去解析:
xml文件内容


<?xml version="1.0" encoding="utf-8"?>
<books>
	<book id="1">
		<name>金苹果</name>
		<info>锄禾日当午</info>
	</book>
	<book id="2">
		<name>银苹果</name>
		<info>苹果很幸苦</info>
	</book>
</books>

节点操作解析


public class Demo1 {
   public static void main(String[] args) throws IOException, DocumentException {
       // 获取输入流
       FileInputStream fis = new FileInputStream("javaSE/src/com/practise/xml_json/book.xml");
       // 创建xml的读取对象
       SAXReader reader = new SAXReader();
       // 读取xml文件
       Document document = reader.read(fis);
       // 获取根节点对象
       Element root = document.getRootElement();
       // 获取根节点的名字
       List<Element> books = root.elements();
       // 遍历获取第二个节点
       for (int i = 0; i < books.size(); i++) {
           Element book = books.get(i);
           System.out.println(book.attributeValue("id"));
           System.out.println(book.elementTextTrim("name"));
           System.out.println(book.elementTextTrim("info"));
           
           //List<Element> list = book.elements();
           //for (int j = 0; j < list.size(); j++) {
           //    System.out.println(list.get(j).getTextTrim());
           //}
       }
       fis.close();
   }
}

运行结果:

在这里插入图片描述

6. 使用XPATH进行解析


public class XpathDemo {
    
    public static void main(String[] args) throws FileNotFoundException, DocumentException {
        FileInputStream fis = new FileInputStream("javaSE/src/com/practise/xml_json/book.xml");
        SAXReader read = new SAXReader();
        Document document = read.read(fis);
        // 通过文档对象+XPath查找所有的name节点
        List<Node> names = document.selectNodes("//name");
        for (Node name : names) {
            System.out.println(name.getName() + ":" + name.getText());
        }

        // 获取指定id的name节点
        Node node = document.selectSingleNode("//book[@id='1']//name");
        System.out.println(node.getName() + ":" + node.getText());
    }
}

Java转换json数据,在这里我推荐两个包,就是fastjson和gjson
fastjson作为alibaba的国内开源json包,也是很不错的,但是在1.2.69的版本上好像有bug,后面应该已经改善了。
gjson的作为谷歌的国外的开源ison包,也有其优势。
我主要就是说一说这两个开源包的使用

fastjson里面封装了一个抽象的JSON类,里面有着许多静态方法,所以我们不需要实例化对象,直接通过类名.方法名就可以调用了。


	public class FastJsonDemo {
    public static void main(String[] args) {
        // 将对象转换为json数据
        System.out.println(JSON.toJSON(new Book(1001, "水浒传", "武松打虎")));

        // 将json对象转换为Java对象,注意不要把双引号改为单引号,这里的双引号是通过了转义的得到的
        Book book = JSON.parseObject("{\"id\":1001,\"name\":\"水浒传\",\"info\":\"武松打虎\"}", Book.class);
        System.out.println(book.getName());
    }
}

运行结果:

在这里插入图片描述

-gjson的使用
gson使用起来相对于fastjson来说有点复杂.


public class JsonDemo1 {
    public static void main(String[] args) {
        // 创建gson对象
        Gson gson = new Gson();
        // 转换
        Book book = new Book(1001, "水浒传", "武松打虎");
        String s = gson.toJson(book);
        System.out.println(s);

        System.out.println(gson.fromJson(s, Book.class));
    }
}

运行结果:

在这里插入图片描述

到此这篇关于Java解析xml文件和json转换的文章就介绍到这了,更多相关java xml文件json转换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯