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

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

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

Java解析xml的方法有四種:

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

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

<?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>

節(jié)點操作解析

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的讀取對象
       SAXReader reader = new SAXReader();
       // 讀取xml文件
       Document document = reader.read(fis);
       // 獲取根節(jié)點對象
       Element root = document.getRootElement();
       // 獲取根節(jié)點的名字
       List<Element> books = root.elements();
       // 遍歷獲取第二個節(jié)點
       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)容,個人認為適合操作不知道標簽的情況下操作,
               以免造成內(nèi)存的浪費。
            */
           //List<Element> list = book.elements();
           //for (int j = 0; j < list.size(); j++) {
           //    System.out.println(list.get(j).getTextTrim());
           //}
       }
       fis.close();
   }
}

運行結(jié)果:

在這里插入圖片描述

6. 使用XPATH進行解析

public class XpathDemo {
    /*
        /   : 表示根節(jié)點
        //  : 從發(fā)起查找的節(jié)點開始查找后代節(jié)點
        .   : 查找當前節(jié)點
        ..  : 查找父節(jié)點
        @   : 選擇屬性 *
              使用方式:[@屬性名='值']
     */
    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節(jié)點
        List<Node> names = document.selectNodes("http://name");
        for (Node name : names) {
            System.out.println(name.getName() + ":" + name.getText());
        }

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

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

  • fastjson的使用

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

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

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

運行結(jié)果:

在這里插入圖片描述

-gjson的使用
gson使用起來相對于fastjson來說有點復(fù)雜.

public class JsonDemo1 {
    public static void main(String[] args) {
        // 創(chuàng)建gson對象
        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));
    }
}

運行結(jié)果:

在這里插入圖片描述

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Java中二叉樹的建立和各種遍歷實例代碼

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

    Spring項目運行依賴spring-contex解析

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

最新評論

康马县| 临潭县| 儋州市| 邢台县| 库车县| 乃东县| 天气| 海口市| 乐东| 枞阳县| 拉萨市| 通河县| 沿河| 富阳市| 孝感市| 改则县| 夏河县| 恩施市| 万山特区| 布拖县| 辉南县| 盈江县| 天全县| 牡丹江市| 称多县| 古田县| 龙南县| 剑河县| 黎平县| 西林县| 湄潭县| 塔城市| 滨海县| 区。| 平昌县| 呼图壁县| 淳安县| 浠水县| 海丰县| 嘉义县| 佛山市|