Java解析XML和JSON的重要方法

 更新时间:2025年11月14日 09:18:17   作者:座山雕~  
这篇文章主要为大家详细介绍了Java解析XML和JSON的几种重要方法,文中的示例代码讲解详细,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下

1.XML的三种解析

DOM解析:将xml文件全部加载到内存中,对内存开销较大,支持随意的访问,增删改查,解析速度慢。

SAX解析:基于事件驱动,逐行读取xml,不占用内存,速度比较快,无法随机访问,不能修改。

StAX解析:位于这两者之间,基于拉取模式,支持xml写入,支持选择性解析。

2.DOM + XPath 解析 (重点掌握)

        // 1. 创建SAXReader对象
        // 注意:DOM4J 的 SAXReader 不是纯 SAX 解析,而是 SAX + DOM 混合模式。
        // 它底层用 SAX 高效读取 XML,但最终构建 DOM4J 的 Document 对象,支持 XPath 查询。
        SAXReader reader = new SAXReader();
        InputStream is = Test02.class.getClassLoader().getResourceAsStream("test.xml");
        //获取文件 xml
        Document readfile = reader.read(is);
        String sle = "//book/title"; // //book/title
        List<Node> list = readfile.selectNodes(sle);
        for (Node A:list){
            System.out.println(A);

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.List;

public class Dom4jXpathExample {
    public static void main(String[] args) {
        try {
            // 1. 创建SAXReader对象
            // 注意:DOM4J 的 SAXReader 不是纯 SAX 解析,而是 SAX + DOM 混合模式。
            // 它底层用 SAX 高效读取 XML,但最终构建 DOM4J 的 Document 对象,支持 XPath 查询。
            SAXReader reader = new SAXReader();
            
            // 2. 加载XML文件
            File file = new File("books.xml");
            Document document = reader.read(file);
            
            System.out.println("=== 所有书籍标题 ===");
            // 3. 使用XPath选择所有title元素
            List<Node> titleNodes = document.selectNodes("//book/title");
            for (Node node : titleNodes) {
                System.out.println(node.getText());
            }
            
            System.out.println("\n=== 价格超过35的书籍 ===");
            // 4. 使用XPath选择价格>35的书籍
            List<Node> expensiveBooks = document.selectNodes("//book[price>35]");
            for (Node book : expensiveBooks) {
                String title = book.selectSingleNode("title").getText();
                String price = book.selectSingleNode("price").getText();
                System.out.println(title + " - 价格: " + price);
            }
            
            System.out.println("\n=== WEB类别的书籍 ===");
            // 5. 使用属性选择
            List<Node> webBooks = document.selectNodes("//book[@category='WEB']");
            for (Node book : webBooks) {
                String title = book.selectSingleNode("title").getText();
                String author = book.selectSingleNode("author").getText();
                System.out.println(title + " - 作者: " + author);
            }
            
            // 6. 获取单个节点
            Node firstBook = document.selectSingleNode("//book[1]");
            System.out.println("\n第一本书的类别: " + firstBook.valueOf("@category"));
            
        } catch (DocumentException e) {
            e.printStackTrace();
        }
    }
}

3.java解析JSON常用的库:

(常用) Jackson

        String jsonString = """
                {
                  "name" : "Bob",
                  "age" : 25
                }
                """;
        ObjectMapper mapper = new ObjectMapper();
        Student student = mapper.readValue(jsonString, Student.class);
        System.out.println(student);
        String s = mapper.writeValueAsString(student);
        System.out.println(s);

就两行代码,两个方法:

创建:ObjectMapper 对象 ,调用下面两个方法即可。

1.将对象转换为 JSON格式:writeValueAsString(对象)

2.将JSON转换为java对象:readValue(json字符,类的信息)

(常用)Gson

        Gson gson = new Gson();
        Student user = gson.fromJson(jsonString, Student.class); // JSON转对象
        System.out.println(user);
        String json = gson.toJson(user); // 对象转JSON
        System.out.println(json);

也是两行代码:

创建gson对象

1.使用fromJson:将json转换为对象

2.使用toJson:将对象转换为json

到此这篇关于Java解析XML和JSON的重要方法的文章就介绍到这了,更多相关Java解析XML和JSON内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot 项目打成 jar后加载外部配置文件的操作方法

    SpringBoot 项目打成 jar后加载外部配置文件的操作方法

    这篇文章主要介绍了SpringBoot 项目打成 jar后加载外部配置文件的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Java对数器验证算法详解

    Java对数器验证算法详解

    这篇文章主要介绍了Java对数器验证算法,Java对数函数的计算方法非常有问题,然而在API中却有惊人的误差。但是假如运用了以下的方法,用Java处理数字所碰到的小麻烦就可以轻而易举的解决了
    2023-04-04
  • springboot集成微软teams的实例代码

    springboot集成微软teams的实例代码

    Microsoft Teams 是一款基于聊天的智能团队协作工具,可以同步进行文档共享,并为成员提供包括语音、视频会议在内的即时通讯工具,今天给大家介绍springboot集成微软teams的示例代码,感兴趣的朋友一起看看吧
    2022-01-01
  • Java中的垃圾收集器详解

    Java中的垃圾收集器详解

    这篇文章主要介绍了Java中的垃圾收集器详解,垃圾收集机制是 Java 的招牌能力,极大地提高了开发效率,如今垃圾收集几乎成为现代语言的标配,需要的朋友可以参考下
    2023-07-07
  • Mybatis批量修改时出现报错问题解决方案

    Mybatis批量修改时出现报错问题解决方案

    这篇文章主要介绍了Mybatis批量修改时出现报错问题解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 解决Mybatis的@Param()注解导致分页失效的问题

    解决Mybatis的@Param()注解导致分页失效的问题

    这篇文章主要介绍了解决Mybatis的@Param()注解导致分页失效的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • Servlet机制Pushlet原理及用法详解

    Servlet机制Pushlet原理及用法详解

    这篇文章主要介绍了Servlet机制Pushlet原理及用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Spring Data Jpa Mysql使用utf8mb4编码的示例代码

    Spring Data Jpa Mysql使用utf8mb4编码的示例代码

    这篇文章主要介绍了Spring Data Jpa Mysql使用utf8mb4编码的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • 浅谈HashMap中7种遍历方式的性能分析

    浅谈HashMap中7种遍历方式的性能分析

    本文先从HashMap的遍历方法讲起,然后再从性能、原理以及安全性等方面,来分析HashMap各种遍历方式的优势与不足
    2021-06-06
  • 浅谈Java中IO和NIO的本质和区别

    浅谈Java中IO和NIO的本质和区别

    IO的全称是input output,是java程序跟外部世界交流的桥梁,IO指的是java.io包中的所有类,他们是从java1.0开始就存在的。NIO叫做new IO,是在java1.4中引入的新一代IO。IO的本质是什么呢?它和NIO有什么区别呢?我们该怎么学习IO和NIO呢?看完这篇文章一切都有答案。
    2021-06-06

最新评论