Java解析xml文件和json转换的方法(DOM4j解析)

Java解析xml的方法有四种:

DOM解析
SAX解析
JDOM解析
DOM4J解析
本次主要介绍使用DOM4j进行解析:
这里我主要使用两种方式去解析:
xml文件内容



    
        金苹果
        锄禾日当午
    
    
        银苹果
        苹果很幸苦
    

节点操作解析
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 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 list = book.elements();
       //for (int j = 0; j < list.size(); j++) {
       //    System.out.println(list.get(j).getTextTrim());
       //}
   }
   fis.close();

}
}
运行结果:
Java解析xml文件和json转换的方法(DOM4j解析)_第1张图片

  1. 使用XPATH进行解析
  2. 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 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());
    }
}

运行结果:
Java解析xml文件和json转换的方法(DOM4j解析)_第2张图片
-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转换的方法(DOM4j解析)_第3张图片
到此这篇关于Java解析xml文件和json转换的文章就介绍到这了,谢谢大家的观看

你可能感兴趣的:(java)