最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java解析XML和JSON的重要方法

 更新時間:2025年11月14日 09:18:17   作者:座山雕~  
這篇文章主要為大家詳細(xì)介紹了Java解析XML和JSON的幾種重要方法,文中的示例代碼講解詳細(xì),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下

1.XML的三種解析

DOM解析:將xml文件全部加載到內(nèi)存中,對內(nèi)存開銷較大,支持隨意的訪問,增刪改查,解析速度慢。

SAX解析:基于事件驅(qū)動,逐行讀取xml,不占用內(nèi)存,速度比較快,無法隨機訪問,不能修改。

StAX解析:位于這兩者之間,基于拉取模式,支持xml寫入,支持選擇性解析。

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

        // 1. 創(chuàng)建SAXReader對象
        // 注意:DOM4J 的 SAXReader 不是純 SAX 解析,而是 SAX + DOM 混合模式。
        // 它底層用 SAX 高效讀取 XML,但最終構(gòu)建 DOM4J 的 Document 對象,支持 XPath 查詢。
        SAXReader reader = new SAXReader();
        InputStream is = Test02.class.getClassLoader().getResourceAsStream("test.xml");
        //獲取文件 xml
        Document readfile = reader.read(is);
        String sle = "http://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. 創(chuàng)建SAXReader對象
            // 注意:DOM4J 的 SAXReader 不是純 SAX 解析,而是 SAX + DOM 混合模式。
            // 它底層用 SAX 高效讀取 XML,但最終構(gòu)建 DOM4J 的 Document 對象,支持 XPath 查詢。
            SAXReader reader = new SAXReader();
            
            // 2. 加載XML文件
            File file = new File("books.xml");
            Document document = reader.read(file);
            
            System.out.println("=== 所有書籍標(biāo)題 ===");
            // 3. 使用XPath選擇所有title元素
            List<Node> titleNodes = document.selectNodes("http://book/title");
            for (Node node : titleNodes) {
                System.out.println(node.getText());
            }
            
            System.out.println("\n=== 價格超過35的書籍 ===");
            // 4. 使用XPath選擇價格>35的書籍
            List<Node> expensiveBooks = document.selectNodes("http://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("http://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. 獲取單個節(jié)點
            Node firstBook = document.selectSingleNode("http://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);

就兩行代碼,兩個方法:

創(chuàng)建:ObjectMapper 對象 ,調(diào)用下面兩個方法即可。

1.將對象轉(zhuǎn)換為 JSON格式:writeValueAsString(對象)

2.將JSON轉(zhuǎn)換為java對象:readValue(json字符,類的信息)

(常用)Gson

        Gson gson = new Gson();
        Student user = gson.fromJson(jsonString, Student.class); // JSON轉(zhuǎn)對象
        System.out.println(user);
        String json = gson.toJson(user); // 對象轉(zhuǎn)JSON
        System.out.println(json);

也是兩行代碼:

創(chuàng)建gson對象

1.使用fromJson:將json轉(zhuǎn)換為對象

2.使用toJson:將對象轉(zhuǎn)換為json

到此這篇關(guān)于Java解析XML和JSON的重要方法的文章就介紹到這了,更多相關(guān)Java解析XML和JSON內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java實現(xiàn)FIFO功能的完整代碼實踐

    Java實現(xiàn)FIFO功能的完整代碼實踐

    在軟件開發(fā)中,隊列(Queue)是一種常見的數(shù)據(jù)結(jié)構(gòu),其特點是先進先出(FIFO,First In First Out),FIFO 隊列在生產(chǎn)者-消費者模型、任務(wù)調(diào)度、緩沖區(qū)管理等場景中具有廣泛的應(yīng)用,本文給大家介紹了Java實現(xiàn)FIFO功能的完整代碼實踐,需要的朋友可以參考下
    2025-03-03
  • 淺談Java父子類加載順序

    淺談Java父子類加載順序

    本文主要介紹了Java父子類加載順序,那么這么長怎么記呀?本文就幫大家總結(jié)一下,更有利于記憶,感興趣的可以了解一下
    2021-08-08
  • java實現(xiàn)的RC4加密解密算法示例

    java實現(xiàn)的RC4加密解密算法示例

    這篇文章主要介紹了java實現(xiàn)的RC4加密解密算法,結(jié)合具體實例形式分析了java RC4加密解密算法的實現(xiàn)與使用技巧,需要的朋友可以參考下
    2017-06-06
  • springboot使用dynamic做多數(shù)據(jù)源配置全過程

    springboot使用dynamic做多數(shù)據(jù)源配置全過程

    文章介紹了如何使用dynamic依賴實現(xiàn)多數(shù)據(jù)源配置,并解決多數(shù)據(jù)源失效問題,通過配置yml文件、使用@DS注解指定數(shù)據(jù)源以及合理使用事務(wù)傳播機制,成功解決了項目中的多數(shù)據(jù)源問題
    2025-12-12
  • 利用Spring JPA中的@Version注解實現(xiàn)樂觀鎖

    利用Spring JPA中的@Version注解實現(xiàn)樂觀鎖

    樂觀鎖是數(shù)據(jù)庫和應(yīng)用程序中使用的一種并發(fā)控制策略,用于在多個事務(wù)嘗試更新單個記錄時確保數(shù)據(jù)完整性,Java Persistence API (JPA) 提供了一種借助@Version注解在 Java 應(yīng)用程序中實現(xiàn)樂觀鎖的機制,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2023-11-11
  • 詳解Java使用JDBC連接MySQL數(shù)據(jù)庫

    詳解Java使用JDBC連接MySQL數(shù)據(jù)庫

    本文詳細(xì)講解了Java使用JDBC連接MySQL數(shù)據(jù)庫的方法,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • ThreadLocal?在上下文傳值場景實踐源碼

    ThreadLocal?在上下文傳值場景實踐源碼

    這篇文章主要為大家介紹了ThreadLocal在上下文傳值場景下的實踐源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步
    2022-03-03
  • Java編寫實現(xiàn)登陸窗口

    Java編寫實現(xiàn)登陸窗口

    這篇文章主要為大家詳細(xì)介紹了Java編寫實現(xiàn)登陸窗口,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • springboot整合mybatis將sql打印到日志的實例詳解

    springboot整合mybatis將sql打印到日志的實例詳解

    這篇文章主要介紹了springboot整合mybatis將sql打印到日志的實例詳解,需要的朋友可以參考下
    2017-12-12
  • SpringBoot詳解Banner的使用

    SpringBoot詳解Banner的使用

    這篇文章主要介紹了超個性修改SpringBoot項目的啟動banner的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07

最新評論

腾冲县| 新干县| 江源县| 荆门市| 广德县| 定陶县| 临城县| 中卫市| 织金县| 新沂市| 金乡县| 延长县| 寿光市| 珠海市| 南漳县| 清水河县| 阳春市| 肥乡县| 故城县| 沐川县| 皋兰县| 赤峰市| 广州市| 桐柏县| 海口市| 上蔡县| 射洪县| 鲁甸县| 团风县| 宜黄县| 无为县| 芜湖县| 蓬莱市| 新平| 南投市| 阿合奇县| 准格尔旗| 和田市| 罗山县| 泸水县| 深圳市|