欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2021年08月09日 09:46:02   作者:傾心之夏  
相信大家都知道Java解析xml的方法有四種,每種方法都很不錯(cuò),今天通過本文給大家分享使用DOM4j進(jìn)行解析的方法,文章通過兩種方法給大家進(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>金蘋果</name>
		<info>鋤禾日當(dāng)午</info>
	</book>
	<book id="2">
		<name>銀蘋果</name>
		<info>蘋果很幸苦</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)開始查找后代節(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);
        // 通過文檔對(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)開源json包,也是很不錯(cuò)的,但是在1.2.69的版本上好像有bug,后面應(yīng)該已經(jīng)改善了。
gjson的作為谷歌的國(guó)外的開源ison包,也有其優(yōu)勢(shì)。
我主要就是說一說這兩個(gè)開源包的使用

  • fastjson的使用

fastjson里面封裝了一個(gè)抽象的JSON類,里面有著許多靜態(tài)方法,所以我們不需要實(shí)例化對(duì)象,直接通過類名.方法名就可以調(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)是通過了轉(zhuǎn)義的得到的
        Book book = JSON.parseObject("{\"id\":1001,\"name\":\"水滸傳\",\"info\":\"武松打虎\"}", Book.class);
        System.out.println(book.getName());
    }
}

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

在這里插入圖片描述

-gjson的使用
gson使用起來相對(duì)于fastjson來說有點(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)文章

  • Java中的Thread.join()詳解

    Java中的Thread.join()詳解

    這篇文章主要介紹了Thread.join()詳解?,join是Thread類的一個(gè)方法,啟動(dòng)線程后直接調(diào)用,本文通過實(shí)例代碼介紹了join方法的作用及用法詳解,需要的朋友可以參考下
    2023-09-09
  • 詳解SpringBoot中關(guān)于%2e的Trick

    詳解SpringBoot中關(guān)于%2e的Trick

    這篇文章主要介紹了SpringBoot中關(guān)于%2e的Trick,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Spring MVC結(jié)合Spring Data JPA實(shí)現(xiàn)按條件查詢和分頁

    Spring MVC結(jié)合Spring Data JPA實(shí)現(xiàn)按條件查詢和分頁

    這篇文章主要為大家詳細(xì)介紹了Spring MVC結(jié)合Spring Data JPA實(shí)現(xiàn)按條件查詢,以及分頁效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Java算法之串的簡(jiǎn)單處理

    Java算法之串的簡(jiǎn)單處理

    今天小編就為大家分享一篇關(guān)于Java算法之串的簡(jiǎn)單處理,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • 多線程下怎樣保證OkHttpClient的線程安全

    多線程下怎樣保證OkHttpClient的線程安全

    這篇文章主要介紹了多線程下怎樣保證OkHttpClient的線程安全問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • JavaSE、JavaEE和JavaWeb三大工程目錄詳解

    JavaSE、JavaEE和JavaWeb三大工程目錄詳解

    這篇文章主要給大家介紹了關(guān)于JavaSE、JavaEE和JavaWeb三大工程目錄的相關(guān)資料,很多對(duì)java不是很了解的同學(xué)在看到課程?綱的時(shí)候發(fā)現(xiàn)??出現(xiàn)了JavaSE、JavaEE、JavaME、JavaWEB這些詞,搞得?頭霧?,需要的朋友可以參考下
    2023-07-07
  • spring?boot整合mongo查詢converter異常排查記錄

    spring?boot整合mongo查詢converter異常排查記錄

    這篇文章主要為大家介紹了spring?boot整合mongo查詢時(shí)拋出converter異常的排查解決記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-03-03
  • 使用Spring Boot的LoggersEndpoint管理日志級(jí)別

    使用Spring Boot的LoggersEndpoint管理日志級(jí)別

    這篇文章主要為大家介紹了使用Spring Boot的LoggersEndpoint管理日志級(jí)別,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • SpringBoot使用Interceptor攔截器的實(shí)例

    SpringBoot使用Interceptor攔截器的實(shí)例

    這篇文章主要介紹了SpringBoot使用Interceptor攔截器的相關(guān)知識(shí),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • idea perttier的使用和縮進(jìn)改為4不成功問題及解決

    idea perttier的使用和縮進(jìn)改為4不成功問題及解決

    這篇文章主要介紹了idea perttier的使用和縮進(jìn)改為4不成功問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05

最新評(píng)論