1. 程式人生 > 程式設計 >Java解析xml檔案和json轉換的方法(DOM4j解析)

Java解析xml檔案和json轉換的方法(DOM4j解析)

解析xml的方法有四種:

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

本次主要介紹使用DOM4j進行解析:
這裡我主要使用兩種方式去解析:
xml檔案內容

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

節點操作解析

public class Demo1 {
   public static void main(String[] args) throws IOException,DocumentException {
       // 獲取輸入流
       FileInputStream fis = new FileInputStream("javaSE/src/com/practise/xml_on/book.xml");
       // 建立xml的讀取物件
       SAXReader reader = new SAXReader();
       // 讀取xml檔案
       Document document = reader.read(fis);
       // 獲取根節點物件
       Element root = document.getRootElement();
       // 獲取根節點的名字
       List<Element> books = root.elements();
       // 遍歷獲取第二個節點
       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"));
           /*
               使用迴圈一直獲取xml的內容,個人認為適合操作不知道標籤的情況下操作,
               以免造成記憶體的浪費。
            */
           //List<Element> list = book.elements();
           //for (int j = 0; j < list.size(); j++) {
           //    System.out.println(list.get(j).getTextTrim());
           //}
       }
       XfPmfBXFP
fis.close(); } }

執行結果:

在這裡插入圖片描述

6. 使用XPATH進行解析

public class XpathDemo {
    /*
        /   : 表示根節點
        //  : 從發起查詢的節點開始查詢後代節點
        .   : 查詢當前節點
        ..  : 查詢父節點
        @   : 選擇屬性 *
              使用方式:[@屬性名='值']
     */
    public static void main(String[] args) throws FileNotFoundException,DocumentException {
        FileInputStream fis = new FileInputStream("javaSE/src/com/practise/xml_json/book.http://www.cppcns.com
xml"); SAXReader read = new SAXReader(); Document document = read.read(fis); // 通過文件物件+XPath查詢所有的name節點 List<Node> names = document.selectNodes("//name"); for (Node name : names) { System.out.println(name.getName() + ":" + name.getText()); } // 獲取指定id的name節點 Node node = document.selectSingleNode("//book[@id='1']//name"); System.out.println(node.getName() + ":" + node.getText()); } }

Java轉換json資料,在這裡我推薦兩個包,就是fastjson和gjson
fastjson作為alibaba的國內開源json包,也是很不錯的,但是在1.2.69的版本上好像有bug,後面應該已經改善了。
gjson的作為谷歌的國外的開源ison包,也有其優勢。
我主要就是說一說這兩個開源包的使用

  • fastjson的使用

fastjson裡面封裝了一個抽象的JSON類,裡面有著許多靜態方法,所以我們不需要例項化物件,直接通過類名.方法名就可以呼叫了。

	public class FastJsonDemo {
    public static void main(String[] args) {
        // 將物件轉換為json資料
        System.out.println(JSON.toJSON(new Book(1001,"水滸傳","武松打虎XfPmfBXFP")));

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

執行結果:

在這裡插入圖片描述

-gjson的使用
gson使用起來相對於fastjson來說有點複雜.

public class JsonDemo1 {
    public static void main(String[] args) {
        // 建立gson物件
        Gson gson = new Gson();
        // 轉換
        Book book = new Book(1001,"武松打虎");
        String s = gson.toJson(book);
        System.out.println(s);

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

執行結果:

在這裡插入圖片描述

到此這篇關於Java解析xml檔案和json轉換的文章就介紹到這了,更多相關java xml檔案json轉換內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!