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

Java解析xml文件和json轉(zhuǎn)換的方法(DOM4j解析)

 更新時(shí)間:2021年08月09日 09:46:02   作者:傾心之夏  
相信大家都知道Java解析xml的方法有四種,每種方法都很不錯(cuò),今天通過(guò)本文給大家分享使用DOM4j進(jìn)行解析的方法,文章通過(guò)兩種方法給大家進(jìn)行解析,感興趣的朋友一起看看吧

Java解析xml的方法有四種:

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

本次主要介紹使用DOM4j進(jìn)行解析:
這里我主要使用兩種方式去解析:
xml文件內(nèi)容

<?xml version="1.0" encoding="utf-8"?>
<books>
	<book id="1">
		<name>金蘋(píng)果</name>
		<info>鋤禾日當(dāng)午</info>
	</book>
	<book id="2">
		<name>銀蘋(píng)果</name>
		<info>蘋(píng)果很幸苦</info>
	</book>
</books>

節(jié)點(diǎn)操作解析

public class Demo1 {
   public static void main(String[] args) throws IOException, DocumentException {
       // 獲取輸入流
       FileInputStream fis = new FileInputStream("javaSE/src/com/practise/xml_json/book.xml");
       // 創(chuàng)建xml的讀取對(duì)象
       SAXReader reader = new SAXReader();
       // 讀取xml文件
       Document document = reader.read(fis);
       // 獲取根節(jié)點(diǎn)對(duì)象
       Element root = document.getRootElement();
       // 獲取根節(jié)點(diǎn)的名字
       List<Element> books = root.elements();
       // 遍歷獲取第二個(gè)節(jié)點(diǎn)
       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"));
           /*
               使用循環(huán)一直獲取xml的內(nèi)容,個(gè)人認(rèn)為適合操作不知道標(biāo)簽的情況下操作,
               以免造成內(nèi)存的浪費(fèi)。
            */
           //List<Element> list = book.elements();
           //for (int j = 0; j < list.size(); j++) {
           //    System.out.println(list.get(j).getTextTrim());
           //}
       }
       fis.close();
   }
}

運(yùn)行結(jié)果:

在這里插入圖片描述

6. 使用XPATH進(jìn)行解析

public class XpathDemo {
    /*
        /   : 表示根節(jié)點(diǎn)
        //  : 從發(fā)起查找的節(jié)點(diǎn)開(kāi)始查找后代節(jié)點(diǎn)
        .   : 查找當(dāng)前節(jié)點(diǎn)
        ..  : 查找父節(jié)點(diǎn)
        @   : 選擇屬性 *
              使用方式:[@屬性名='值']
     */
    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);
        // 通過(guò)文檔對(duì)象+XPath查找所有的name節(jié)點(diǎn)
        List<Node> names = document.selectNodes("http://name");
        for (Node name : names) {
            System.out.println(name.getName() + ":" + name.getText());
        }

        // 獲取指定id的name節(jié)點(diǎn)
        Node node = document.selectSingleNode("http://book[@id='1']//name");
        System.out.println(node.getName() + ":" + node.getText());
    }
}

Java轉(zhuǎn)換json數(shù)據(jù),在這里我推薦兩個(gè)包,就是fastjson和gjson
fastjson作為alibaba的國(guó)內(nèi)開(kāi)源json包,也是很不錯(cuò)的,但是在1.2.69的版本上好像有bug,后面應(yīng)該已經(jīng)改善了。
gjson的作為谷歌的國(guó)外的開(kāi)源ison包,也有其優(yōu)勢(shì)。
我主要就是說(shuō)一說(shuō)這兩個(gè)開(kāi)源包的使用

  • fastjson的使用

fastjson里面封裝了一個(gè)抽象的JSON類(lèi),里面有著許多靜態(tài)方法,所以我們不需要實(shí)例化對(duì)象,直接通過(guò)類(lèi)名.方法名就可以調(diào)用了。

	public class FastJsonDemo {
    public static void main(String[] args) {
        // 將對(duì)象轉(zhuǎn)換為json數(shù)據(jù)
        System.out.println(JSON.toJSON(new Book(1001, "水滸傳", "武松打虎")));

        // 將json對(duì)象轉(zhuǎn)換為Java對(duì)象,注意不要把雙引號(hào)改為單引號(hào),這里的雙引號(hào)是通過(guò)了轉(zhuǎn)義的得到的
        Book book = JSON.parseObject("{\"id\":1001,\"name\":\"水滸傳\",\"info\":\"武松打虎\"}", Book.class);
        System.out.println(book.getName());
    }
}

運(yùn)行結(jié)果:

在這里插入圖片描述

-gjson的使用
gson使用起來(lái)相對(duì)于fastjson來(lái)說(shuō)有點(diǎn)復(fù)雜.

public class JsonDemo1 {
    public static void main(String[] args) {
        // 創(chuàng)建gson對(duì)象
        Gson gson = new Gson();
        // 轉(zhuǎn)換
        Book book = new Book(1001, "水滸傳", "武松打虎");
        String s = gson.toJson(book);
        System.out.println(s);

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

運(yùn)行結(jié)果:

在這里插入圖片描述

到此這篇關(guān)于Java解析xml文件和json轉(zhuǎn)換的文章就介紹到這了,更多相關(guān)java xml文件json轉(zhuǎn)換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • eclipse漢化及jdk安裝環(huán)境配置超詳細(xì)教程(Java安裝教程)

    eclipse漢化及jdk安裝環(huán)境配置超詳細(xì)教程(Java安裝教程)

    這篇文章主要介紹了eclipse漢化及jdk安裝環(huán)境配置超詳細(xì)教程(Java安裝教程),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • spring cloud gateway整合sentinel實(shí)現(xiàn)網(wǎng)關(guān)限流

    spring cloud gateway整合sentinel實(shí)現(xiàn)網(wǎng)關(guān)限流

    這篇文章主要介紹了spring cloud gateway整合sentinel實(shí)現(xiàn)網(wǎng)關(guān)限流,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • Eclipse中配置Maven build打包的方法步驟

    Eclipse中配置Maven build打包的方法步驟

    這篇文章主要介紹了Eclipse中配置Maven build打包的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Java用jxl讀取excel并保存到數(shù)據(jù)庫(kù)的方法

    Java用jxl讀取excel并保存到數(shù)據(jù)庫(kù)的方法

    這篇文章主要為大家詳細(xì)介紹了Java用jxl讀取excel并保存到數(shù)據(jù)庫(kù)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Spring整合WebSocket應(yīng)用示例(上)

    Spring整合WebSocket應(yīng)用示例(上)

    以下教程是小編在參與開(kāi)發(fā)公司的一個(gè)crm系統(tǒng),整理些相關(guān)資料,在該系統(tǒng)中有很多消息推送功能,在其中用到了websocket技術(shù)。下面小編整理分享到腳本之家平臺(tái)供大家參考
    2016-04-04
  • 關(guān)于MyBatisSystemException異常產(chǎn)生的原因及解決過(guò)程

    關(guān)于MyBatisSystemException異常產(chǎn)生的原因及解決過(guò)程

    文章講述了在使用MyBatis進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)遇到的異常及其解決過(guò)程,首先考慮了事務(wù)問(wèn)題,但未解決,接著懷疑是MyBatis的一級(jí)緩存問(wèn)題,關(guān)閉緩存后問(wèn)題依舊存在,最終發(fā)現(xiàn)是SQL映射文件中的參數(shù)傳遞錯(cuò)誤,使用了錯(cuò)誤的標(biāo)簽導(dǎo)致循環(huán)插入
    2025-01-01
  • 淺談自定義注解在Spring中的應(yīng)用

    淺談自定義注解在Spring中的應(yīng)用

    這篇文章主要介紹了淺談自定義注解在Spring中的應(yīng)用,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 詳解Java數(shù)據(jù)結(jié)構(gòu)和算法(有序數(shù)組和二分查找)

    詳解Java數(shù)據(jù)結(jié)構(gòu)和算法(有序數(shù)組和二分查找)

    本篇文章主要介紹了詳解Java數(shù)據(jù)結(jié)構(gòu)和算法(有序數(shù)組和二分查找),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Java中二叉樹(shù)的建立和各種遍歷實(shí)例代碼

    Java中二叉樹(shù)的建立和各種遍歷實(shí)例代碼

    這篇文章主要介紹了Java中二叉樹(shù)的建立和各種遍歷實(shí)例代碼,涉及樹(shù)節(jié)點(diǎn)的定義,后序遍歷,層序遍歷,深度優(yōu)先和廣度優(yōu)先等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Spring項(xiàng)目運(yùn)行依賴(lài)spring-contex解析

    Spring項(xiàng)目運(yùn)行依賴(lài)spring-contex解析

    這篇文章主要介紹了Spring項(xiàng)目運(yùn)行依賴(lài)spring-contex解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論

南召县| 峡江县| 肃宁县| 绵阳市| 沾化县| 紫阳县| 赞皇县| 新田县| 营山县| 大冶市| 株洲市| 文水县| 济阳县| 亚东县| 万安县| 大邑县| 贵定县| 阿尔山市| 大渡口区| 广饶县| 红河县| 昌图县| 兴宁市| 高碑店市| 磐石市| 集安市| 新邵县| 洛宁县| 观塘区| 正蓝旗| 桓台县| 万山特区| 塔城市| 秦皇岛市| 喜德县| 馆陶县| 通江县| 正宁县| 隆德县| 白城市| 迁安市|