Java解析xml文件和json轉換的方法(DOM4j解析)
Java解析xml的方法有四種:
- DOM解析
- SAX解析
- JDOM解析
- 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_json/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()); //} } 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.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, "水滸傳", "武松打虎"))); // 將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轉換內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- Java中使用DOM4J生成xml文件並解析xml文件的操作
- java集合collection接口與子接口及實現類
- java比較兩個json文件的差異及說明
- Java中ArrayList與順序表的概念與使用實例
- Java全面解析string類型的xml字符串